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