Sto usando C++ 98. In che misura è possibile riordinare le chiamate di funzione? Non sto usando nessuno stato globale, solo stato di oggetti locali alla funzione.Le chiamate di funzione possono essere riordinate
Il mio caso particolare, è:
{
RaiiType T;
Object1.FunctionCall();
Object2.FunctionCall();
}
Dove Object1 e Object2 sono dichiarati nel prossimo ambito up. Il costruttore per T
può essere riordinato dopo una chiamata di funzione, supponendo che possa essere banalmente provato (almeno per un umano) che non ci siano dipendenze tra la costruzione e le chiamate di funzione?
Nel mio caso particolare, l'oggetto RAII viene utilizzato per cronometrare l'esecuzione delle chiamate di funzione.
Dipende da "nessuna dipendenza". Se si intende che la differenza non può essere osservata, allora sì, il compilatore (e anche la CPU stessa) è libero di riordinare le operazioni. –
Nessun riordino che modifica il comportamento osservato. Ma il compilatore è autorizzato a fare qualsiasi cosa sotto la "regola come se", se non puoi dire la differenza. – sp2danny
uno di voi dovrebbe postare questo come risposta ("come se la regola" preferibilmente) – Creris