Код: Выделить всё
#include
template
struct S {
void f(T, T) { /*...*/ }
void f(T, int) requires (!std::same_as) { /*...*/ }
void f(int, T) requires (!std::same_as) { /*...*/ }
void f(int, int) requires (!std::same_as) { /*...*/ }
};
int main() {
S s;
}
void f(int, T) requires (!std::same_as && true) { /*...*/ }
void f(int, int) requires (!std::same_as && true && true) { /*...*/ }
< /code>
[*] Почему язык определяется так, чтобы отключен < /strong> перегрузки должны иметь уникальные подписи? Я понимаю, что все перегрузки должны быть уникальными, потому что компилятор должен знать, какой из них вызвать. Но Неиседленные перегрузки не вызываются, поэтому требуется уникальность в этом случае кажется ненужной.
Есть ли лучше/приятнее/более элегантный обход>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -be-unique
Мобильная версия