Каковы требования к типу для этой функции шаблона - PullRequest
4 голосов
/ 10 апреля 2011

Я смотрю на код C ++, который выглядит следующим образом:

template<class A>
bool foo(int A::*)
{ /*blah*/ }

Что такое конструкция int A::*? Какие требования предъявляются к типу A?

Большое спасибо !!

1 Ответ

3 голосов
/ 10 апреля 2011

int A::* - указатель на элемент данных int типа A.Например, с учетом типов:

struct Foo { int i; };
struct Bar { double d; };
  • int Foo::* является указателем на int член данных типа Foo, единственные допустимые значения которого равны нулю и адрес Foo::i
  • int Bar::* - указатель на элемент данных int типа Bar, единственное допустимое значение которого равно нулю, поскольку Bar не содержит int членов данных

Единственное требование, предъявляемое к типу A, заключается в том, что он не является примитивным типом, поскольку примитивные типы, очевидно, не могут иметь членов данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...