在 wandbox 中四处乱逛,我发现如果 clang 看到<=>
出现在 C++17 或更早版本中,它实际上会发出警告。
warning: '<=>' is a single token in C++2a; add a space to avoid a change in behavior [-Wc++2a-compat]
我试图弄清楚如何<=>
在 C++17 中编写一个合法的字符序列用例,但我想出的东西都觉得很做作。最可能的示例(imo)涉及使用模板:
struct A {
bool operator<=(A) const { return true; }
};
template <auto Cmp>
void f() { }
int main() {
f<&A::operator<=>();
}
其他一切仍然涉及通过 name 明确提及比较函数operator<=
。是否有更常见的外观<=>
,我无法想象这会促使 clang 开发人员添加此警告?