模板

时间:2016-12-27 13:06:31

标签: c++ templates types

通常的做法是在模板类中声明当前类型的使用/ typedef

template <typename T1, typename T2 = std::vector<T1>, typename Allocator>
class my_class {
  //...
public:
  using my_class_t = my_class<T1, T2, Allocator>;  //1
  my_class_t operator()();  //2
  //...
}

我自己已经注意到,使用( 1 )编写它是非常舒服的解决方案,以防止每次需要时重写复杂类型 - 例如 2 表明它可以更轻松地完成。我的问题:

  • 是否有任何文件记录约定该类型的主要名称是(typemy_class_t,...)?
  • 是否有任何方法可以简化声明(类似于预先定义的this_t,可能在新标准中)?

1 个答案:

答案 0 :(得分:2)

我不知道在类本身内部提供类名的任何约定。由于类定义外部的任何人都需要以某种方式拼写出类型,然后才能访问嵌套的嵌套名称,外部用户似乎没有必要。

出于类定义本身的目的,可能有用。存在一个简短的表单来访问类模板定义或成员定义中的实例化:您可以只使用模板的名称。也就是说,您的using别名可能已写为

using my_class_t = my_class;