mat*_*att 9 c++ compiler-construction visual-c++
const int bob = 0;
if(bob)
{
int fred = 6/bob;
}
Run Code Online (Sandbox Code Playgroud)
你将在完成除法的行上得到一个错误:"错误C2124:除以或除以零"
这是蹩脚的,因为'if'检查失败是不可避免的,因为除法将导致div为0.坦率地说,我认为编译器甚至没有理由评估'if'中的任何内容,除了确保支撑完整性.
无论如何,显然这个例子不是我的问题,我的问题来自于做复杂的模板尝试在编译时尽可能多地做,在某些情况下参数可能是0.
反正有没有解决这个错误?或禁用它?或者比这更好的解决方法:
目前我能想到的唯一工作(我之前遇到过与递归枚举访问相同的问题)是使用模板特化来执行'if'.
哦是的,我正在使用Visual Studio Professional 2005 SP1和vista/win7修复程序.