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

标签 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_ 作为模板参数?

最佳答案

显然这是一个编译器错误,将在“即将发布的 Visual C++”中修复。

Bug report and reply from Microsoft

关于c++ - 在 MSVC 中使用数据成员指针作为模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29491136/

相关文章:

javascript - SpiderMonkey 变量列表

c++ - 使用模板模板参数时模板参数推导失败

c++ - win32 内容已更改但不显示更新,除非移动窗口

javascript - 在 MustacheJs 中切换大小写

c++ - 引用依赖类型名

c++ - realloc 错误而不是 malloc?

c++ - 如何从 g++ 链接到 VS2008 生成的 .libs

c++ - 如何更改静态链接库中 const 字符串数组的 Visual Studio C++ 初始化顺序

c++ - 如何区分某些 LVITEMS(文件或目录)?

c++ - 在 C++ 中查找等价类数量的有效方法