0

有人能解释一下为什么这两个(稍微)不同的代码片段工作方式相似吗?
使用其中一个有什么优势吗?

#1 一种方式

template<typename T>
concept bool Swappable = requires (T a, T b) {
    {std::swap(a, b)} -> void;
};

#2 其他方式

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;
}
4

0 回答 0