返回正确的值,即c++中函数的返回,是否异常安全



在c++中返回正确的值是否异常安全?例如,

template<typename Iterator, typename T>
T my_accumulate(Iterator first, Iterator last) {
return std::accumulate(first, last, T());
};

在上面的代码中,std::accumulate可以抛出。如果std::accumulate投掷会发生什么?T((会导致内存泄漏吗?还是出于某种原因它是安全的?如何为此生成异常安全代码?

如果std::accumulate throws会发生什么?

临时T被销毁(就像正常返回一样(,异常被传播到调用方。

T((会导致内存泄漏吗?

除非类T本身严重损坏,否则不会。

还是出于某种原因它是安全的?

函数是异常安全的。

最新更新