是否可以使用非类型模板参数,它实际上是指向类成员的指针?我想要做的是如下:
struct Person {
Dog dog;
};
template <?? ptr>
struct Strange {
// ...
};
typedef Strange<&Person::dog> weird;
到目前为止,我的工作让我相信没有任何类似的可能,但我很好奇是否有人可以另有说法。
答案 0 :(得分:40)
来自标准:
非类型模板参数应具有以下之一(可选择cv-quali fi ed)类型:
- 整数或枚举类型,
- 指向对象或指向函数的指针,
- 引用对象或对函数的引用,
- 指向会员的指针。
所以这是允许的,并且似乎可以在g++
上工作:
template <Dog Person::*ptr>
struct Strange { ... };