現在のテンプレートからタイプと値の情報を取得する方法:私はこのようになりますテンプレートクラスを持っている
typedef MyStruct<int, 123> struct_def;
私は希望:
template<typename T, T value>
struct MyStruct{
/* Stuff */
};
は、現在、私はこのような何かを、それをインスタンス化するにはこのような何かやりたい:
MyStruct<int,123>
に解決でしょう
typedef typename MagicTemplate<123>::type struct_def;
を....
私の質問は、どのようにテンプレート引数から型と値の両方の情報を取得できますか?
編集:
ソリューションは、ポインタ、メンバへのポインタ、関数ポインタなどで使用することができれば、それはまたいいだろう...
例は:
struct OtherStruct{
int memberA;
long memberB;
void foo(void);
};
static OtherStruct instance;
//Expands to MyStruct<memberA OtherStruct::*, &OtherStruct::memberA>
typedef typename MagicTemplate<&OtherStruct::memberA>::type struct_defA;
//Expands to MyStruct<OtherStruct*,&instance>
typedef typename MagicTemplate<&instance>::type struct_defB;
//Expands to MyStruct<void (OtherStruct::*)(void),&OtherStruct::foo>
typedef typename MagicTemplate<&OtherStruct::foo>::Type struct_defC;
[C++ 17](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0127r2.html)のみ。 – Oktalist
@Oktalistああ....それは意味がある...あまりにも悪い私はまだそれを使用することはできません – DarthRubik
私はマクロ(暗い)魔法を推測しています....それは本当に可能でないので... – DarthRubik