Il seguente codice viene compilato ed eseguito su MSVC2010, dovrebbe?Dovrebbe essere std :: move drop constness?
const std::string s = "foo";
std::string s2(std::move(s));
Posso capire perché questo probabilmente non sarebbe rompere nulla da quando se prendo interni di s devo sapere che nessuno ha intenzione di usarlo in modo che dosn't questione che sto cadere const. Tuttavia, per quanto riguarda dove il compilatore implementa gli oggetti const nella ROM (in un'applicazione incorporata)? La mossa diventerebbe allora una copia? O MSVC dovrebbe darmi un errore?
forse si compila a causa di qualche ottimizzazione? – SomeWittyUsername
@icepack no, la compilazione, in particolare i controlli sulla correttezza const, ecc., Si presentano prima dell'ottimizzazione. –
@icepack la regola d'oro dell'ottimizzazione è la regola as-if. Il compilatore non può fare ottimizzazioni che non si comportano come se non fossero applicate (in termini di comportamento osservabile e all'interno delle regole sul linguaggio). –