相关疑难解决方法(0)

指向类成员的指针作为模板参数

我想使用指向类成员的指针作为模板参数,如下所示:

template <class Class, class Result, Result Class::*Member>
struct MyStruct {
    // ...
};
Run Code Online (Sandbox Code Playgroud)

使用这个结构MyStruct<SomeClass, SomeResult, &SomeClass::value> variable就好了,但我不喜欢我必须指定SomeClassSomeResult.

我想使用,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>,如果是这样,怎么样?

相关问题没有解决我的问题:

c++ templates pointer-to-member c++11 c++14

21
推荐指数
3
解决办法
6233
查看次数

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

pointer-to-member ×1

templates ×1