在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
本身严重损坏,否则不会。
还是出于某种原因它是安全的?
函数是异常安全的。