Quale meccanismo è coinvolto, se al ritorno tipi, che sono costruibili dalle liste di inizializzazione, non specificare il tipo sto tornando, come in:ritorno inizializzatore di lista
std::array<int, 3> make_array()
{
return { 1, 2, 3 };
}
invece di
std::array<int, 3> make_array()
{
return std::array<int, 3>{ 1, 2, 3 };
}
Sono previste sanzioni per le prestazioni, se restituisco l'elenco di inizializzazione senza specificare un tipo? Sto effettivamente restituendo un array, che viene convertito in un std::array
?
sembra troppo ordinata per essere senza penalità, non è vero? ;-) Ma sono sicuro che 'litb' sia corretto. Ciò è molto utile con 'inizializzazione uniforme': possiamo usare questa notazione con tipi personalizzati senza dover codificare un costruttore prendendo una 'std :: initializer_list': il compilatore converte implicitamente l'elenco rinforzato nel normale ctor. Quindi, salviamo la ripetizione di scrivere di nuovo il tipo al ritorno. –