Разбежавшись в wandbox, я обнаружил, что clang действительно выдаст предупреждение, если он увидит <=>
на С++ 17 или ранее.
warning: '<=>' is a single token in C++2a; add a space to avoid a change in behavior [-Wc++2a-compat]
Я попытался выяснить, как написать законный пример использования последовательности символов <=>
в С++ 17, но то, что я придумал, все очень надуманно. Наиболее вероятный пример (imo) предполагает использование шаблона:
struct A {
bool operator<=(A) const { return true; }
};
template <auto Cmp>
void f() { }
int main() {
f<&A::operator<=>();
}
Все остальное по-прежнему включает прямое упоминание функции сравнения по имени operator<=
. Есть ли более общий вид <=>
который я не могу себе представить, что побудило бы разработчиков кланов добавить это предупреждение?