我在C代码中找到了这个构造:
template<typename T, class = decltype(std::declval<T>() < std::declval<T>())>
struct check : std::true_type {};
现在,我了解了它的作用,但我不了解它是如何工作的。如果类型T
不支持<
-operator,则会引发编译错误。但是,显然,当更改class
为其他内容时,整个内容将无法编译并引发语法错误。
什么class = sometypename
意思
class
和typename
这里一样 您也可以这样做:
template<typename T, typename = decltype(std::declval<T>() < std::declval<T>())>
struct check : std::true_type {};
您可以为模板参数指定默认值。例如
template<typename X = int> struct test { };
如果不使用模板参数,也可以省略它们的名称:
template<typename = int> struct test { };
因此,在您的示例中,第二个模板参数只是带有默认参数的未命名参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句