2010-10-30 133 views

回答

3

正确的形式是不带括号

typename T::ABC 

因为括号

(typename T::ABC) 

形式为铸造运营商,不是一个类型!

而且,关键字typename是必需的因为T:ABC是“依赖型”:如果不使用typename,表达T:ABC被解释为如果ABC是类T的成员,并且不嵌套型) 。

3

使用typename关键字:

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

它必须是:

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

但I T里德,这不工作:

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

是的,我也试过,意识到这一点。我不知道为什么它不支持括号! – James 2010-10-30 17:16:23