他の私の質問に基づいています。
次のコードを検討してください
template<typename T, int N>
struct A {
typedef T value_type; // save T to value_type
static const int size = N; // save N to size
};
テンプレート パラメータとしてvalue_type
andを使用できます。size
typedef A<int, 2> A1;
typedef A<A1::value_type, A1::size + 3> A2; // OK, A2 is A<int,5>
今、私はメンバーへのポインタで同じことをしたい:
struct Foo {
int m;
int r;
};
template<int Foo::*Mem>
struct B {
static int Foo::* const mp;
};
template<int Foo::*Mem>
int Foo::* const B<Mem>::mp = Mem; // Save pointer to member
しかし、私はエラーが発生します。
typedef B<&Foo::m> B1;
typedef B<B1::mp> B2; // DOES NOT WORK
最後の行を機能させるには? または類似の結果を得る方法は?
ノート。私はそれがうまくいかないことを知っています。C++ 標準へのリンクは必要ありません。回避策が必要です。