只是为了澄清一下,make_unique当你在表达式中有多个分配而不只是一个时,使用只会增加异常安全性,对吗?例如
void f(T*);
f(new T);
Run Code Online (Sandbox Code Playgroud)
是完全异常安全(就分配和东西而言),而
void f(T*, T*);
f(new T, new T);
Run Code Online (Sandbox Code Playgroud)
是不正确的?
如http://ideone.com/RdINqa所示,std::stoul不会std::out_of_range为负数投掷,而是将它们包裹起来.为什么是这样?似乎-4超出了类型的范围,unsigned long所以它应该抛出.