指向类成员作为模板形参的指针
Pointer to class member as template parameter
是否有可能具有非类型模板参数,实际上是指向类成员的指针?我想要做的是如下所示:
struct Person {
Dog dog;
};
template <?? ptr>
struct Strange {
// ...
};
typedef Strange<&Person::dog> weird;
到目前为止,我的工作让我相信这一切都是不可能的,但我很好奇是否有人能说不同的。
从标准:
非类型模板参数必须是以下类型之一(可选的cv限定):
- 整型或枚举型,
- 指向对象或指向函数的指针,
- 对象引用或函数引用,
- 成员指针
所以它是允许的,并且似乎在g++
上像这样工作:
template <Dog Person::*ptr>
struct Strange { ... };
相关文章:
- 哪个模板形参在boost::shared_ptr构造函数中使用一个原始指针
- 如何在编译时通过模板形参默认值的名称/指针获取函数的类型
- c++中作为形参的指针
- 指向函数的指针vs作为模板非类型形参的函数
- 指向成员变量的引用/指针作为模板形参
- 用带有特定(double..)指针形参的void*函数重载函数
- 为什么模板非类型形参指针和引用实参需要是全局的
- c++形参是一个指向常量对象的指针,但不返回更新后的对象
- 函数指针的vector:不同的模板形参
- 重载在形参中接受指针的操作符
- 关于将指向数组的指针作为函数形参的混淆
- 为什么c++ 11 CAS操作使用两个指针形参
- 在c++中向指针形参传递值
- 将指向类成员的指针作为模板形参传递
- 具有指针引用模板形参的c++模板成员函数
- 在模板演绎中保持函数指针形参的完整类型
- 模板化形参的函数指针歧义
- 指向函数形参的指针vs函数形参
- 指向类成员作为模板形参的指针
- 函数指针的形参类型的模板实参演绎涉及未演绎的形参包