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;

哪种行为是正确的?

以上是typedef-edref-qualified函数类型在gcc和clang之间的行为不同的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>