我在 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 { };
因此在您的示例中,第二个模板参数只是一个带有默认参数的未命名参数。
关于c++ - 模板中的 `class =` 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23728432/