В LWG 3182 говорится, что
Спецификация концепции Same
в 18.4.2 [concept.same]:
template<class T, class U>
concept Same = is_same_v<T, U>;
-1- Same<T, U> subsumes Same<U, T> and vice versa.
кажется противоречивым. Из одного только определения концепции это не тот случай, когда Same<T, U>
включает Same<U, T>
и наоборот.
Однако из cppreference ,
... Коммутативность удовлетворяется, т. Е. Для любых двух типов T
и U
, is_same<T, U>::value == true
тогда и только тогда, когда is_same<U, T>::value == true
.
Примечание Same<T, U>
определяется как is_same_v<T, U>
, как Same<T, U>
не может Same<U, T>
?