Почему равенство проверяется дважды в same_as?

Глядя на "возможный" раздел реализации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>;

Проверка на равенство типов выполняется дважды, один раз как T==Uа второй как U==T. Учитывая, что равенство по своей природе симметрично, зачем нужна дополнительная проверка?

0 ответов

Другие вопросы по тегам