Perché questo codice viene compilato con GCC (4.9 e 5+), ma non con clang (3.5-3.9)?Ancora un'altra discrepanza clang/gcc per quanto riguarda l'uso di ODR?
void test(const int&) { }
int main() {
const int x = 42;
auto f = []{ test(x); };
}
ho qualche vaga idea che la discrepanza ha a che fare con ODR (Regola Una definizione) l'utilizzo, ma non capiscono che abbastanza bene per capire che cosa sta succedendo qui.
interessante clang è felice se si effettua x static –
@RichardHodges Le variabili con durata di archiviazione statica non devono essere catturate. – Brian
Qualcun altro pensa che sia un po 'sciocco che uno debba catturare esplicitamente il contesto invece del compilatore che lo ha capito per noi? – BitTickler