通常的做法是在模板类中声明当前类型的使用/ 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 表明它可以更轻松地完成。我的问题:
type
,my_class_t
,...)?答案 0 :(得分:2)
我不知道在类本身内部提供类名的任何约定。由于类定义外部的任何人都需要以某种方式拼写出类型,然后才能访问嵌套的嵌套名称,外部用户似乎没有必要。
出于类定义本身的目的,可能有用。存在一个简短的表单来访问类模板定义或成员定义中的实例化:您可以只使用模板的名称。也就是说,您的using
别名可能已写为
using my_class_t = my_class;