我正在查看看起来像这样的C ++代码:
template<class A>
bool foo(int A::*)
{ /*blah*/ }
int A::*
构造是什么?它对A
类型有什么要求?
非常感谢!!
答案 0 :(得分:3)
int A::*
是指向int
类型的A
数据成员的指针。例如,给出类型:
struct Foo { int i; };
struct Bar { double d; };
int Foo::*
是指向int
类型的Foo
数据成员的指针,其唯一有效值为null,地址为Foo::i
int Bar::*
是指向int
类型的Bar
数据成员的指针,其唯一有效值为null,因为Bar
不包含int
个数据成员对A
类型施加的唯一要求是它不是原始类型,因为原始类型显然不能拥有数据成员。