gpt4 book ai didi

C++ 命名模板中的当前类型

转载 作者:搜寻专家 更新时间:2023-10-31 02:13:28 24 4
gpt4 key购买 nike

通常的做法是在模板类中声明当前类型的using/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
//...
}

我自己注意到,编写 using(1) 以防止每次需要时重写复杂类型是一种非常舒适的解决方案 - 例如2 表明它可以更容易地完成。我的问题:

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

最佳答案

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

为了类定义本身的目的,它可能是有用的。在类模板定义或成员定义中存在一种访问实例化的简短形式:您可以只使用模板的名称。也就是说,您的 using 别名可以写成

using my_class_t = my_class;

关于C++ 命名模板中的当前类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41345784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com