Здравствуйте, rg45, Вы писали:
R>Так оставь в объявлении члена uint8_t*, а в конструкторе void*. Таким образом, касты становятся деталью реализации класса и не затрагивают клиентский код. При желании преобразования можно локализовать в специальных закрытых функциях так, что это не будет доставлять дискомфорта даже при имплементации самого класса.
Ну, собственно, так и было сделано до constexpr. m_data был void*, но как только к конструктору или оператору добавляется constexpr, компилятор тут же начинает ругаться что static_cast<uint8_t*>(m_data) — не разрешен во времени компиляции. В этом и вопрос, а как "двигать" указатель без каста тогда?