论函数调用中的异常安全性

wil*_*ell 3 c++ function-call exception-safety

f()异常安全的调用吗?

inline std::auto_ptr<C> auto_new() {
   return std::auto_ptr<C>(new C());
}

void f(std::auto_ptr<C> p1,
       std::auto_ptr<C> p2);

// ...
{
    f(auto_new(), auto_new());
}
Run Code Online (Sandbox Code Playgroud)

换句话说,auto_new()如果两个函数是内联的,那么当涉及到第一个和第二个函数调用的原子性时,它会有什么不同吗?

CB *_*ley 5

是的,这是例外的安全; 不,inline对调用表达式中保证的序列点没有区别.