Ist Compiler erlaubt, einen überladenen Postfix-Operator zu optimieren und durch den Präfixoperator zu ersetzen? (Vorausgesetzt, dass Compiler weiß, was Funktion überlastet tut)Überladene Präfix/Postfix-Compiler-Optimierung
Zum Beispiel in dem folgenden Code, die meisten Compiler i++
als ++i
behandeln und derselben Baugruppe erzeugen.
for(int i=0; i<5; i++)
printf("*");
Dann könnte das gleiche für den folgenden Code gelten?
class Integer {
int data;
Integer& operator++() { ++data; return *this; }
Integer operator++(int) { Integer ret = *(this); ++(*this); return ret; }
// And more overloads...
};
for(Integer i=0; i<5; i++)
printf("*");