我想使用指向数据成员的成员指针作为模板参数,如下所示:
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_
作为模板参数?
最佳答案
显然这是一个编译器错误,将在“即将发布的 Visual C++”中修复。
关于c++ - 在 MSVC 中使用数据成员指针作为模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29491136/