Как объявить возвращаемый тип как внутренний класс шаблона typename? - PullRequest
1 голос
/ 30 октября 2010

Как объявить это:

template<typename T>
(T::ABC)& get();

выдает ошибку:

error: expected constructor, destructor, or type conversion before ‘&’ token

Ответы [ 3 ]

3 голосов
/ 11 октября 2012

Правильная форма без скобок

typename T::ABC

, потому что форма с круглыми скобками

(typename T::ABC)

является оператором приведения, а не типом!

Кроме того,ключевое слово typename является обязательным, поскольку T:ABC является «зависимым типом»: если вы не используете typename, выражение T:ABC интерпретируется так, как если бы ABC был членом класса T, а не вложенным типом).

3 голосов
/ 30 октября 2010

Используйте ключевое слово typename:

template<typename T>
typename T::ABC& get();
1 голос
/ 30 октября 2010

Должно быть:

template<typename T>
typename T::ABC& get();

но я пытался, который не работает:

template<typename T>
(typename T::ABC)& get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...