Dev*_*ull 3 c++ language-lawyer c++11 c++14 c++17
存在依赖于以下事实的代码:创建返回值后,本地自动函数变量将被破坏,例如:
1)取消std :: type_info :: name的结果
std::string demangle(const char* name)
{
int status = -4;
std::unique_ptr<char, void(*)(void*)> res {
abi::__cxa_demangle(name, NULL, NULL, &status),
std::free
};
return (status==0) ? res.get() : name;
}
Run Code Online (Sandbox Code Playgroud)
class C {
mutable std::mutex _lock;
map<string,string> deep_member;
public:
auto get_big_lump()
{
std::unique_lock<std::mutex> lock(_lock);
return deep_member;
}
};
Run Code Online (Sandbox Code Playgroud)
标准在哪里指定要保证此订单?
调用结果的复制初始化在返回语句的操作数建立的全表达式结束时在临时变量销毁之前进行排序,而该操作数又在销毁局部变量([stmt .jump]),其中包含return语句。