[英]Default template parameter with class
我刚刚发现了一个关于默认模板参数的奇怪语法
template<class T = class Z>
struct X
{};
第二个“class”关键字在这种情况下意味着什么?
真的没什么特别的。 C ++允许您通过详细的类型说明符引用类。 例如
void foo(class bar*);
这声明了一个函数foo
,它接受bar*
类型的参数。 如果之前没有声明bar
,那么这个精巧的类型说明符构成了包含foo
的命名空间中的bar
声明。 就好像你写过:
class bar;
void foo(bar*);
回到您的示例, X
是一个类模板,需要单个类型参数,由class T
表示,但可以表示为与typename T
相同。 所述类型参数具有默认参数,由详细的类说明符class Z
命名。 该声明可以像上面的函数一样重写:
class Z;
template<class T = Z>
struct X
{};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.