问题描述
请考虑以下 C++20 程序:
#include <iostream>
struct A
{
A() {}
A( const A& ) = delete;
A( A&& ) { std::cout << "m "; }
};
int main() {
[[maybe_unused]] A a = {{A{}}};
}
我预计这里根据标准需要移动省略,所以 A( A&& )
不会被调用。仍然 Clang 称它为:https://gcc.godbolt.org/z/oobh7vWoh
能否请您说明标准是否真的允许这样做?
附言有一个类似的问题 Copy elision for list-initialization,where is it stated in the standard? 但它与 initializer_list
构造函数不同,所以我不认为这个是重复的。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)