C++ 模板类成员 Type alias 声明顺序
时间: 2020-08-21来源:V2EX
前景提要
代码如下: template <typename List> class LargestTypeT; template <typename List> class LargestTypeT { private: using First = Front<List>; using Rest = typename LargestTypeT<PopFront<List>>::Type; public: using Type = IfThenElse<(sizeof(First) >= sizeof(Rest)), First, Rest>; }; template <> class LargestTypeT<Typelist<>> { public: using Type = char; }; template <typename List> using LargestType = typename LargestTypeT<List>::Type;
在类 LargestTypeT 中 Type 的声明顺序是晚于 First 和 Rest 的,但是 Rest 可以成功成为 LargestTypeT<PopFront<List>>::Type 的别名呢(尽管 Type 在 Rest 之后声明)。我也尝试调换 private 和 public 的顺序(先声明 Type, 再声明 First,Rest)这样的话编译器就会报错( First and Rest are not declared )。我很好奇为什么 Type 类型可以先使用后声明呢,是不是跟模板展开有关?

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行