Frage bzgl. Compileroptimierung
-
Würde ein optimierender Compiler die Variable c im folgenden Fall statisch anlegen?
void Foo(const A& a, B& b) { C c; c<< 363 <<68 <<687 <<4543 <<436 <<789; b = a*c; }Oder ginge das nur, wenn ich bereits im Konstruktor die Werte zuweise (was C nicht anbietet)
-
Was ist
C? Was istC::operator<<? Was istC::C? Was soll statisch mit Optimierung zu tun haben?
-
Grundsätzlich könnte der Compiler eine solche Optimierung nur durchführen, wenn die Implementierung von C::C(), operator<<(C&, int) und operator*(A const&, C const&) bekannt sind. Sind diese extern, lässt sich die Frage ganz klar mit nein beantworten.
Sollten alle diese Operationen beim Compilieren bekannt sein, keine Seiteneffekte haben (und selbst keine Operationen mit Seiteneffekt aufrufen) und Konstanten produzieren, würde mich die Antwort allerdings auch interessieren.