Об исключительной безопасности в функциональном вызове - PullRequest
3 голосов
/ 19 января 2011

Является ли вызов 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());
}

Другими словами, имеет ли это какое-то значение, когда речь заходит об атомарности первого и второго auto_new() вызовов функции, если две функции встроены?

1 Ответ

5 голосов
/ 19 января 2011

Да, это исключение безопасно; нет, inline не имеет значения для точек последовательности, гарантированных в вызывающем выражении.

...