есть концепт std::same_as. Делают они вроде бы одно и тоже, но один концепт, а второй тип. Нет ли тут проблемы дизайна?
а ещё есть is_same_v
Вы, может, еще заметили, что same_as<A, B> это совсем не is_same_v<A, B> :)
Нет, вот чтобы совсем не, это я не заметил. А в чем глобальная разница?
Чтобы компилятор мог определить, что template<typename T, typename U> requires std::same_as<T, int> void foo(U); является менее специальной, чем template<typename T, typename U> requires std::same_as<int, T> && std::derived_from<U, Bar> void foo(U); (обратите внимание на разный порядок аргументов same_as) P.S. хотя я и не уверен в полной корректности примера, но общую суть он должен продемонстрировать
Обсуждают сегодня