есть шаблонная структура :
template<typename T>
struct val_T_bit {
void operator=(T val) {
*reinterpret_cast<T*>(this) = val;
}
}
template<typename T>
struct Test : public val_T_bit<int> {
Test() { *this = 0; }
}
Комментарий по поводу using::...operator=; правильный, потому что оператор присваивания, как и другие специальные методы, не наследуется. Такой код использовать нельзя. Во-первых, strict aliasing ub в operator= родителя, во-вторых, портится стек из-за перезаписи класса Test. Попробуй собрать с санитайзером. Во время запуска Test<int> t; после g++ — stack smashing error, после clang — stack overflow. Кстати, инстансы Test<*> не aggregate, не pod, но standard layout.