在 MSVC 中使用数据成员指针作为模板参数
Posted
技术标签:
【中文标题】在 MSVC 中使用数据成员指针作为模板参数【英文标题】:Using data member pointer as template parameter in MSVC 【发布时间】:2015-04-07 12:04:29 【问题描述】:我想使用指向数据成员的成员指针作为模板参数,如下所示:
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_
作为模板参数?
【问题讨论】:
它也在 VS2012 上编译:webcompiler.cloudapp.net @WojciechFrohmberg VS 真的越来越差了......那么可能是编译器错误?有什么解决方法的建议吗? 不确定...我根本无法重现它(我的机器上没有 VS2013)... 【参考方案1】:显然这是一个编译器错误,将在“即将发布的 Visual C++”中修复。
Bug report and reply from Microsoft
【讨论】:
以上是关于在 MSVC 中使用数据成员指针作为模板参数的主要内容,如果未能解决你的问题,请参考以下文章