Vantaggio o svantaggio dell'uso = operatore o inizializzatore uniforme durante l'utilizzo della parola chiave auto

0

La maggior parte degli esempi di auto utilizza l'operatore = .

#include <iostream>

int main()
{
    auto a = 1;
    std::cout << a << '\n';
}

Perché non usano l'inizializzatore uniforme come questo?

#include <iostream>

int main()
{
    auto a {1};
    std::cout << a << '\n';
}

C'è qualche vantaggio o svantaggio nell'usare una sintassi su un'altra mentre usi la parola chiave auto ?

    
posta Lone Learner 24.05.2018 - 14:34
fonte

1 risposta

2

Bene, c'è una ragione. Fino al C ++ 17, auto a {1}; ha fatto la cosa sbagliata (probabilmente). Vedete, il presupposto era che se si stesse usando una lista inizializzata per inizializzare una variabile dichiarata da un segnaposto, si voleva creare un initializer_list<T> . Quindi, a meno che tu non voglia che a sia un initializer_list<int> contenente 1 valore ...

Quindi solo in C ++ 17 fa auto a {1}; effettivamente la cosa che tu (probabilmente) volevi: a sarà un% genuino% co_de. Ovviamente, int sarà ancora un auto a = {1}; , perché è del tutto ovvio, vero?

Quindi sì, probabilmente è meglio attenersi a initializer_list<int> .

    
risposta data 24.05.2018 - 20:05
fonte

Leggi altre domande sui tag