这个问题在这里已经有了答案:
Why does same_as concept check type equality twice?
(3 个回答)
去年关闭。
cppref给出了 std::same_as
的可能实现:
namespace detail {
template<class T, class U>
concept SameHelper = std::is_same_v<T, U>;
}
template<class T, class U>
concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>;
为什么不执行如下:
template<class T, class U>
concept same_as = std::is_same_v<T, U> && std::is_same_v<U, T>;
甚至更短:
template<class T, class U>
concept same_as = std::is_same_v<T, U>;
最佳答案
是t把包容这只发生在概念上。
有了你的提议,same_as<T, U>
不包含 same_as<U, T>
.
进一步阅读 cppreference .
关于c++ - 为什么 std::same_as 以如此奇怪的方式实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61056470/