在MSVC中使用数据成员指针作为模板参数

时间:2015-04-07 12:04:29

标签: c++ templates visual-c++

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

class Node { };

template <typename T, Node T::*member>
class List { };

class Test {
private:
    Node node_;
public:
    typedef List<Test, &Test::node_> Registry;
};

int main() { }

使用G ++可以正常工作,但Visual Studio Express 2013会抱怨以下错误消息:

Error   1   error C2327: 'Test::node_' : is not a type name, static, or enumerator  c:\temp\msvctest\msvctest\main.cpp  10  1   MsvcTest
Error   2   error C2065: 'node_' : undeclared identifier    c:\temp\msvctest\msvctest\main.cpp  10  1   MsvcTest
Error   3   error C2975: 'member' : invalid template argument for 'List', expected compile-time constant expression c:\temp\msvctest\msvctest\main.cpp  10  1   MsvcTest

如何让Visual Studio接受&Test::node_作为模板参数?

1 个答案:

答案 0 :(得分:1)

显然这是一个编译器错误,将在即将发布的Visual C ++&#34;中修复#34;

Bug report and reply from Microsoft