簡単な例を次に示します。
class A
{
enum {OFFSET = 4}; //Due to packing
bool m_bool;
};
template<class T>
class B : public A
{
MyClass<T> m_class;
};
クラス A が MyClass の基本クラスを介して MyClass の機能のサブセットを利用できると仮定すると、クラス A のインスタンスに対する 'm_class' の場所に関する仮定を検証したいと思います。
クラス B のメンバー関数内から次のコードを試しましたが、エラーが発生します (「予期された定数式」)。
static_assert ((byte *)nullptr + OFFSET ==
(byte *)&((B<T> *)nullptr)->m_class, "Error 'm_class' incorrectly located!");
これは、現在のバージョンのコンパイラにとっては野心的すぎるのでしょうか?