我想使用指向类成员的指针作为模板参数,如下所示:
template <class Class, class Result, Result Class::*Member>
struct MyStruct {
// ...
};
使用这个结构就好MyStruct<SomeClass, SomeResult, &SomeClass::value> variable
了,但我不喜欢我必须指定SomeClass
and SomeResult
。
如果可能的话,我想使用MyStruct<&SomeClass::value> variable
它,但不会失去传递任何类并具有任何结果类型的能力。
我尝试了以下方法,但语法是非法的:
template <class Class, class Result>
template <Result Class::*Member>
struct MyStruct {
// ...
};
错误:模板参数列表过多
我尝试使用辅助函数(实际上在 Clang 中有效,但被 GCC 拒绝):
template <class Class, class Result>
static constexpr auto makeMyStruct(Result Class::*member) ->
MyStruct<Class, Result, member> {
// ...
}
错误:在函数体外部使用参数“成员”
错误:模板参数 3 无效
是否有可能有一个简单MyStruct<&SomeClass::value>
的,如果是这样,如何?
没有解决我的问题的相关问题: