【发布时间】:2015-03-05 10:38:30
【问题描述】:
inline void my_assert( bool cond, const std::exception &e = my_assert_failed() )
{
if ( !cond )
throw e;
}
该标准确保:
在函数调用 (5.2.2) 中与引用参数的临时绑定一直存在,直到包含调用的完整表达式完成为止。
对于抛出的临时对象:
只要有针对该异常的处理程序正在执行,临时性就会持续存在。
我能否推断出传递给my_assert 的临时变量在catch 块完成之前仍然存在?
【问题讨论】:
-
throwexpression 执行其参数的副本,因此您不会抛出临时参数。 -
@user657267 这就是答案。