const int bob = 0;
if(bob)
{
int fred = 6/bob;
}
dostaniesz błąd na linii, gdzie podział odbywa się: „error C2124: Podziel MOD przez zero”MSVC++ błąd w dzieleniu przez 0, który nigdy się nie wydarzy! naprawić?
który jest kulawy, bo to jest tak samo nieuniknione, że „jeżeli” check nie powiedzie się, ponieważ jest to podział, który spowoduje, że div o 0. całkiem szczerze nie widzę powodu, dla którego kompilator mógłby ocenić cokolwiek w "if", z wyjątkiem zapewnienia integralności klamrowej.
tak, oczywiście, że przykład nie jest mój problem, mój problem jest, gdy robi skomplikowany szablon rzeczy, aby spróbować i zrobić jak najwięcej w czasie kompilacji, jak to możliwe, w niektórych przypadkach argumenty mogą być 0.
jest tam mimo naprawić ten błąd? lub wyłączyć? lub jakikolwiek lepszy sposób obejścia tego problemu:
Obecnie jedyną pracą, jaką mogę wymyślić (co zrobiłem wcześniej, gdy napotkałem ten sam problem z dostępem rekursywnym enumem) jest użycie specjalizacji szablonów do zrobienia "jeśli".
O tak, używam programu Visual Studio Professional 2005 SP1 z poprawką vista/win7.
Możesz spróbować przypisać do zmiennej lokalnej, a następnie ją podzielić. – Artelius
Dunno, jeśli to zadziała, ale co powiesz na: int fred = 6/(bob? Bob: 1); –
@Jeremy Friesner: miło! to działa, i rozwiąże mój problem, proszę, ułóż to jako odpowiedź! – matt