有人可以解释我为什么这两个(稍微)不同的代码片段同样工作?
是否使用其中一个的优势?
template<typename T>
concept bool Swappable = requires (T a, T b) {
{std::swap(a, b)} -> void;
};
template<typename T>
concept bool Swappable() {
return requires(T a, T b) {
{std::swap(a, b)} -> void;
};
};
第二个示例使用括号可交换并返回“要求”的原因是什么?
可能主要:
int main() {
static_assert(Swappable<int>, "NOT SWAPPABLE!"); // Compiles when #1
// static_assert(Swappable<int>(), "NOT SWAPPABLE!"); // Compiles when #2
return 0;
}