vbs*_*stb 7 c++ member-function-pointers language-lawyer
当我尝试编译以下代码时:
struct A {
void foo() & {
}
};
int main()
{
using F = void() &; // or 'typedef void F() &;'
[[maybe_unused]] F A::*pf = &A::foo;
}
Run Code Online (Sandbox Code Playgroud)
使用 clang 可以编译,但是使用 gcc 编译时会产生错误。
test.cc:9:37: error: cannot convert ‘void (A::*)() &’ to ‘void (A::*)()’ in initialization
9 | [[maybe_unused]] F A::*pf = &A::foo;
Run Code Online (Sandbox Code Playgroud)
哪种行为是正确的?