C++ConceptsCompoundRequirementswithoutnoexceptandreturn-type-requirementvsSimpleRequirements
template<class T>
concept C1 = requires(T a, T b) { a + b; };
template<class T>
concept C2 = requires(T a, T b) { { a + b }; };
Would there be a difference between C1 vs C2 functionally?
Edit: grammar
回答
它们是等价的。该标准甚至有一个例子:
template<typename T> concept C1 = requires(T x) { {x++}; };C1 中的复合要求要求这
x++是一个有效的表达式。它相当于 simple-requirementx++;。
复合需求能够测试表达式的某些方面,例如它是否为 noexcept 或者结果类型是否满足某些概念。但是如果这些测试都不存在,它只是将模板参数替换到表达式中,验证其有效性,然后结束。
以上是C++ConceptsCompoundRequirementswithoutnoexceptandreturn-type-requirementvsSimpleRequirements的全部内容。
THE END
二维码