Мне всегда говорили, что компилятор достаточно умный, чтобы исключить мертвый код. Большая часть кода, который я пишу, имеет много информации, известную во время компиляции, но код должен быть написан в самой общей форме. Я не знаю сборки, поэтому я не могу проверить сгенерированную сборку. Какой код можно эффективно устранить в конечном исполняемом файле?
Несколько примеров, но не ограничиваясь этим
f(bool b){
if(b){
//some code
}else{
//some code
}
}
f(true);
//////////////////////////
template<bool b>
f(){
if(b){
//some code
}else{
//some code
}
}
f<true>();
///////////////////////////
Что делать, если определение f
находится в другом объектном коде, а основной f(true)
. Будет ли связывать оптимизацию времени эффективно устранять мертвый код? Что такое параметр/трюк стиля кодирования/компилятора для облегчения устранения мертвого кода?