2016-01-04 18 views
5

In C++ 14 qualcosa di simile a questo è stato reso legale (per lambdas): -auto come la funzione argomento

auto l = [](auto x, auto y) { return x+y; }; 

Tuttavia una cosa del genere non è ancora legale: -

auto sum (auto x, auto y) 
{ 
    return x+y; 
} 

La mia curiosità è perché il secondo non è stato aggiunto allo standard (anche se dovrebbe essere aggiunto in C++ 17, si spera)? Quali erano i pro & contro del secondo?

+0

modello molto !? – StoryTeller

risposta

6

Non è stato aggiunto perché è un'altra cosa da aggiungere e il tempo non è infinito. Non possiamo aspettarci che tutti gli utili miglioramenti vengano aggiunti in un colpo solo, possiamo? Come hai identificato, sarà in C++ 17.

+0

Il tempo * è * finito. – YSC

+0

Ora sono confuso. Il tempo è infinito o il tempo è finito o il tempo è entrambi? Paging [physics.stackexchange] (http://physics.stackexchange.com/) – AndyG

+1

Per rendere tutti felici, diremo che il tempo è "O (infinito)". – erip

3

Fa parte di un TS che non era pronto in tempo per C++ 14.

Si sta per essere equivalente a

template <typename T, typename U> 
auto sum(T x, U y) { return x+y } 

L'unico pro è che è leggermente più corta. Tutto il resto è lo stesso.

+0

Comprese le ramificazioni ODR? Definizione in ogni TU ecc.? (Deve essere, suppongo - che mi fa pensare che questa nuova funzionalità sia solo un grande mucchio di confusione che aspetta di accadere) –

+0

@LightnessRacesinOrbit non credo che possa confondere se uno è usato per i modelli –

+0

@AnkitAcharya: Forse, ma il caratteristica è letteralmente "fai sembrare un modello come non modello". Non mi sembra un'idea geniale. –

Problemi correlati