2013-02-02 139 views
0

内部限定一个typedef是否有可能使用类型ý已经由一个typedef另一类型X的内三分之一模板型内Ž限定,从其中X充当Z的模板参数?使用模板类型名称

这(非编译)伪代码说明所需的行为:

struct X { 
    typedef float Y; 
}; 

template<typename T> 
struct Z { 
    void DoSomething(T::Y with_this); 
}; 

回答

3

是的,这是可能的。你只需要让编译器知道T::Y是一类,因为它取决于T

void DoSomething(typename T::Y with_this); 
+1

如果你很好奇,这是因为C++希望它知道什么之前'T'是解析模板。不知道'T'是'T :: X'可能是成员函数,'enum'值还是静态成员。为了使它不含糊,我们需要用'typename'来说'输入'。 – Yakk

相关问题