g++ 4.8.1: constantes Funktionszeigerarray optimieren
- 
					
					
					
					
 Warum optimiert der g++ 4.8.1 folgendes nicht weg? void f() {] void g() {} const auto fa = {f,g}; int main() { for (func: fa) func(); }
 
- 
					
					
					
					
 Und kann mal jemand ausprobieren, ob der clang++ 3.3 es wegoptimiert? 
 
- 
					
					
					
					
 clang macht da auch nichts. Deshalb wird es vermutlich nicht wegoptimiert // main.cpp [ dein code ] // wasanderes.cpp extern const auto fa; int x = (const_cast<initializer_list>(fa)={was, anderes}, 0);Änderst du main.cc in constexpr void(*fa[])(void) = {f,g};oder for (auto func: {f,g})optimiert clang das weg. 
 
- 
					
					
					
					
 Danke. Sehe ich das richtig, dass der g++ 4.8.1 folgendes *nicht* wegoptimiert: #include <iostream> using namespace std; int f() {return 5;} int g() {return 3;} int main() { int i = 0; for (auto func: {f,g}) i += func(); cout << i; }