C++ 为什么std::和_以如此奇怪的方式实现?

C++ 为什么std::和_以如此奇怪的方式实现?,c++,standards,c++20,c++-concepts,language-implementation,C++,Standards,C++20,C++ Concepts,Language Implementation,提供了与相同的std::的可能实现: 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

提供了与相同的std::的可能实现:

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>;
名称空间详细信息{
模板
概念SameHelper=std::是否相同;
}
模板
概念与=细节::SameHelper和&细节::SameHelper;
为什么不按如下方式实施:

template<class T, class U>
concept same_as = std::is_same_v<T, U> && std::is_same_v<U, T>;
模板
概念相同=std::is_same_v&&std::is_same_v;
甚至更短:

template<class T, class U>
concept same_as = std::is_same_v<T, U>;
模板
概念相同=标准::是否相同;

只有在概念中才会出现包容

根据你的建议

same\u as
不包含
same\u as


进一步阅读。

关于最后一个选项,但第一个选项是等效的,不?
std::is_same_v
不是概念,因此
same_作为
将是原子约束,带有表达式
std::is_same_v&&std::is_same_v
。感谢我已经找到了详细信息。这本书比我现在有时间读的多,所以我把它放在我的清单上:)