クラス A から派生したクラス B があります。A は静的フィールド f を宣言し、B は同じ名前の同様のフィールドを宣言する場合があります。以下は機能しません。
struct A { static int f; };
struct B : A { static int f; }; // A::f is different from B::f
struct C : A {}; // A::f is the same as C::f
BOOST_STATIC_ASSERT((&A::f != &B::f));
BOOST_STATIC_ASSERT((&A::f == &C::f));
理論的にはこれらのアサーションはコンパイル時にチェックできますが、定数式はアドレスを取ることができないため、許可されません。
この種のチェックをコンパイル時に機能させる方法はありますか?