&引用;超载“;模板化和非模板化类型 在C++中,可以重载模板函数,以便它可以用模板参数调用,或者不需要: void func(); template <typename T> void func(); func(); func<int>(); void func(); 模板void func(); func(); func();

&引用;超载“;模板化和非模板化类型 在C++中,可以重载模板函数,以便它可以用模板参数调用,或者不需要: void func(); template <typename T> void func(); func(); func<int>(); void func(); 模板void func(); func(); func();,c++,C++,类型(即类)是否可能相同 类; 模板类; 甲级; 乙级;; 我只对能够同时使用类和类作为类型感兴趣,其中类的行为与类相同-类的声明可以根据需要进行复杂的操作。添加默认参数 template<typename T = void> class Class; 模板 班级; Class现在相当于Class您可以使用默认模板参数,并将其保留在Class中。依我看,有时将其作为模板可能会令人困惑。我认为如果其他语法是可能的,那么它应该是默认语法所使用的语法vs.自动a=make_class

类型(即类)是否可能相同

类;
模板类;
甲级;
乙级;;

我只对能够同时使用
作为类型感兴趣,其中
的行为与
相同-类的声明可以根据需要进行复杂的操作。

添加默认参数

template<typename T = void>
class Class;
模板
班级;

Class
现在相当于
Class

您可以使用默认模板参数,并将其保留在
Class
中。依我看,有时将其作为模板可能会令人困惑。我认为如果其他语法是可能的,那么它应该是默认语法所使用的语法vs.
自动a=make_class()
@dyp我其实很喜欢这个,特别是因为类将经常用作r值。谢谢你的建议,但我更希望能够简单地使用
class
,而不是
class
@zennehoy使用类型或模板别名都无法做到这一点,因为单个名称不能同时表示类型和模板。宏黑客可能有办法解决这个问题,但我不想去那里。谢谢——我也很害怕,但我想我会问的。宏黑客绝对不是一个选项,所以我想我将不得不接受
template<typename T = void>
class Class;