Цитата(smalcom @ Sep 7 2016, 20:47)

это не кольцевой буфер.
А какой?
Или Вас смущает &(Size-1) ? Ну так в данной реализации все заточено под скорость, ессно Size должен быть степенью двойки. В коде также стоит проверка, компилятор всегда проверяет является он степенью двойки или нет:
Код
static_assert((Size&(Size-1)) == 0, "Size must be power of 2");
Иначе придется, как минимум добавлять if, а если совсем все плохо - % (остаток от деления).