Jaki martwy kod może wyeliminować GCC z końcowego wyniku?

Zawsze mówiono mi, że kompilator jest wystarczająco inteligentny, aby wyeliminować martwy kod. Znaczna część kodu, który piszę, ma wiele informacji znanych w czasie kompilacji, ale kod musi być napisany w najbardziej ogólnej formie. Nie znam żadnego zespołu, więc nie mogę zbadać wygenerowanego zespołu. Jaki kod można skutecznie wyeliminować w ostatecznym pliku wykonywalnym?

Kilka przykładów, ale nie tylko

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>();
///////////////////////////

Co jeśli definicjaf jest w innym kodzie obiektywnym i w wywołanymf(true) jest w głównym. Czy optymalizacja czasu łącza skutecznie wyeliminuje martwy kod? Jaka jest opcja / sztuczka stylu kodowania / kompilatora, aby ułatwić eliminację kodu?

questionAnswers(3)

yourAnswerToTheQuestion