,如何声明这一点:如何声明返回类型作为模板类型名称的内部类?
template<typename T>
(T::ABC)& get();
提示错误:
error: expected constructor, destructor, or type conversion before ‘&’ token
,如何声明这一点:如何声明返回类型作为模板类型名称的内部类?
template<typename T>
(T::ABC)& get();
提示错误:
error: expected constructor, destructor, or type conversion before ‘&’ token
正确的形式是不带括号
typename T::ABC
因为括号
(typename T::ABC)
形式为铸造运营商,不是一个类型!
而且,关键字typename
是必需的因为T:ABC
是“依赖型”:如果不使用typename
,表达T:ABC
被解释为如果ABC是类T的成员,并且不嵌套型) 。
使用typename
关键字:
template<typename T>
typename T::ABC& get();
它必须是:
template<typename T>
typename T::ABC& get();
但I T里德,这不工作:
template<typename T>
(typename T::ABC)& get();
是的,我也试过,意识到这一点。我不知道为什么它不支持括号! – James 2010-10-30 17:16:23