为什么不总是使用断言?

-1 c++

如果static_assert仅限于编译时评估,为什么不总是坚持,assert如果它可以处理编译时和运行时评估的表达式?

Gab*_*iel 6

assert(...)总是在运行时进行评估,当然你可以使用编译时计算表达式来调用它,但是你只能在运行时看到断言.有时候你想确保的东西,只有当某个编译expressiontrue,当你使用这就是 static_assert(expression)如果不履行这使编译器错误.这是"尽早失败"的直接精神(也可能很难;-)