typedef-edref-qualified函数类型在gcc和clang之间的行为不同
当我尝试编译以下代码时:
struct A {
void foo() & {
}
};
int main()
{
using F = void() &; // or 'typedef void F() &;'
[[maybe_unused]] F A::*pf = &A::foo;
}
使用 clang 可以编译,但是使用 gcc 编译时会产生错误。
test.cc:9:37: error: cannot convert ‘void (A::*)() &’ to ‘void (A::*)()’ in initialization
9 | [[maybe_unused]] F A::*pf = &A::foo;
哪种行为是正确的?
THE END
二维码