Является ли звонок 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()
вызовы функций, если эти две функции инлайн?
Что с вашей точки зрения? 'Inline'? – sharptooth
Да, это ключевое слово 'inline'. Это означает, что тело функции можно заменить на месте, что, по моему мнению, делает код менее прочным с точки зрения атомарности. – wilhelmtell
@wilhelmtell: _однозначное изменение, которое происходит, когда вы выполняете функцию inline, - это изменения в правиле определения _one_. Все остальное может оставаться совершенно одинаковым. –