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

标签 c++ templates pointers member

是否可以有非类型模板参数,它实际上是指向类成员的指针?我想要做的是如下所示:

struct Person {
  Dog dog;
};

template <?? ptr>
struct Strange {
  // ...
};

typedef Strange<&Person::dog> weird;

到目前为止,我的工作让我相信没有任何事情是可能的,但我很好奇是否有人能说其他话。

最佳答案

来自标准:

A non-type template-parameter shall have one of the following (optionally cv-qualified) types:

  • integral or enumeration type,
  • pointer to object or pointer to function,
  • reference to object or reference to function,
  • pointer to member.

所以它是允许的,并且似乎可以像这样在 g++ 上工作:

template <Dog Person::*ptr>
struct Strange { ... };

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

相关文章:

c - 如何将多维指针/数组传递给递归函数

c++ - C/C++预处理器宏可以有默认参数值吗?

c++ - 引用类型的数据成员提供 "loophole"围绕 const 正确性

c++ - 通话没有匹配功能?

javascript - icanhaz/mustache 循环(遍历元素)js 错误

magento - 将链接 rel 添加到 Magento 的头部

c++ - 如何将通过引用运算符获得的指针值转换为字符串?

c - 从 void 指针设置和获取值的不同方法

c++ - CUDA C++ : Is something special about the number 64?

c++ - 当包含它的对象不改变时,这个成员变量的地址如何在 objective-c 中改变?