Reputation: 4027
I am looking at C++ code that looks like this :
template<class A>
bool foo(int A::*)
{ /*blah*/ }
What is the int A::*
construct? What requirement does it impose on the type A
?
Thanks a lot!!
Upvotes: 4
Views: 79
Reputation: 62975
int A::*
is a pointer to an int
data member of type A
. E.g., given the types:
struct Foo { int i; };
struct Bar { double d; };
int Foo::*
is a pointer to an int
data member of type Foo
, whose only valid values are null and the address of Foo::i
int Bar::*
is a pointer to an int
data member of type Bar
, whose only valid value is null, as Bar
contains no int
data membersThe only requirement imposed on type A
is that it is not a primitive type, as primitive types obviously cannot have data members.
Upvotes: 3