开发者

What are the requirements on type for this template function

开发者 https://www.devze.com 2023-02-23 02:30 出处:网络
I am looking at C++ code that looks like this : template<开发者_JAVA百科;class A> bool foo(int A::*)

I am looking at C++ code that looks like this :

template<开发者_JAVA百科;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!!


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 members

The only requirement imposed on type A is that it is not a primitive type, as primitive types obviously cannot have data members.

0

精彩评论

暂无评论...
验证码 换一张
取 消