请考虑以下简单示例,其中函数bar
返回一个具有私有析构函数的类A
的对象,并且必须进行强制返回值优化(RVO):
class A { ~A() = default; };
A bar() { return {}; }
这段代码被Clang编译器接受,但被GCC编译器以以下错误拒绝:
error: 'constexpr A::~A()' is private within this context
2 | A bar() { return {}; }
| ^
https://gcc.godbolt.org/z/q6c33absK
这里哪一个编译器是正确的?