如何解决std :: same_as和std :: is_same之间的区别
我正在阅读std::same_as
的文档,看来它只是转发到std::is_same_v
。 cppreference具有以下示例实现:
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::is_same_v
甚至是必要的?并且,如果std::same_as
具有相同的语义,那么我需要什么呢?我也可以使用std::is_same_v
作为这样的约束:
template <typename T>
void test(T x) requires std::is_same_v<T,int> {}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。