为什么我无法使用GCC主干版本比较函数指针?
using f_t = int(*)(int);
f_t a { nullptr }, b { nullptr };
auto c = a <=> b;
int main (){}
提供
a.cpp:4:13: error: invalid operands of types ‘f_t’ {aka ‘int (*)(int)’} and ‘f_t’ {aka ‘int (*)(int)’} to binary ‘operator<=>’
4 | auto c = (a <=> b) == 0;
| ~ ^~~ ~
| | |
| | f_t {aka int (*)(int)}
| f_t {aka int (*)(int)}
<=>
不相等时,您期望返回什么?函数地址甚至比普通地址更没有用(在编译之间变化,如果一个函数来自使用ASLR加载的单独DLL /共享对象,则甚至可以在运行时变化);确定哪个更小或更大并没有什么有用的信息。早期的C ++规范仅为函数指针定义了==
/!=
;我不会期望他们已经扩展了它。 - ShadowRanger