Naturalmente, questo non verrà compilato:I numeri letterali sono mutabili o no?
int &z = 3; // error: invalid initialization of non-const reference ....
e questo compilerà:
const int &z = 3; // OK
Ora, prendere in considerazione:
const int y = 3;
int && yrr = y; // const error (as you would expect)
int && yrr = move(y); // const error (as you would expect)
Ma queste righe successive non compilare per me . Penso che non dovrebbe
int && w = 3;
int && yrr = move(3);
void bar(int && x) {x = 10;}
bar(3);
Queste ultime due righe non consentono di modificare il valore letterale 3? Qual è la differenza tra 3
e un const int? E infine, c'è qualche pericolo nel 'modificare' i letterali?
(g ++ - 4.6 (GCC) 4.6.2 con -std=gnu++0x -Wall -Wextra
)
Per rispondere alla mia stessa domanda: In 'move (3)' forse il 3 viene copiato per primo per creare un int temporaneo sarà distrutto alla fine dell'istruzione. È questa la spiegazione? –
Nella tua seconda affermazione: const &z = 3; manca l'identificatore di tipo. quindi non viene compilato. –
Grazie, @CJohnson, normalmente copio e incollo il codice di lavoro qui. Ma ero incurante di quella fodera! –