У меня есть класс Coord
вроде этого:
class Coord
{
public:
Coord(int32_t x, int32_t y, int32_t z): mVec{{x, y, z}} {}
int32_t operator[](size_t i) const { assert(i < 3); return mVec[i]; }
private:
std::array<int32_t, 3> mVec
}
Теперь я использую свой класс:
Coord origin(-1, 2, -4);
uint32_t DIM = 1 << 12; // 2 ^ 12
// zero out the low-order bits
Coord originAfter = Coord(origin[0] & ~(DIM - 1),
origin[1] & ~(DIM - 1),
origin[2] & ~(DIM - 1));
Не теряет ли originAfter
знак origin
?
ОБНОВЛЕНИЕ
Код доступен здесь .