是否可以有非类型模板参数,它实际上是指向类成员的指针?我想要做的是如下所示:
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/