Il compilatore Clang genera un avviso che compila questo snippet di codice e non riesco a capire perché.restituisce riferimento all'oggetto temporaneo locale sul puntatore dereferenziamento
const int* Get() {
static const int ARRAY[4] = {1, 2, 3, 4};
return &ARRAY[0];
}
const int& Test() {
const auto& p = Get();
return (*p);
}
warning: returning reference to local temporary object [-Wreturn-stack-address]
return (*p);
GCC non presenta avvisi su questo codice. posso fissare il frammento di come questo: const auto p = Get();
Ma io voglio sapere se c'è qualche oggetto temporaneo e il problema è più profondo
@ 101010 "oggetto temporaneo"? Forse potresti essere un po 'più chiaro? Possiamo sicuramente fare riferimenti a variabili non const nello stack. –
Mentre 'p' è temporaneo,' * p' è valido. Immagino sia un falso positivo di Clang. – Jarod42
@JonathanMee: [Informazioni sui provvisori] (http://herbsutter.com/2013/05/13/gotw-2-solution-temporary-objects/) –