Presumo, con i tuoi esempi per std::vector<int>
e std::string
intendevi coprire anche gli altri contenitori, ad esempio, std::list<int>
, std::deque<int>
, ecc. Che hanno lo stesso problema, ovviamente, come std::vector<int>
. Allo stesso modo, il int
non è l'unico tipo in quanto si applica anche a char
, short
, long
e il loro unsigned
versione (forse anche alcuni altri tipi integrali).
Penso che ci sia anche std::valarray<T>
Ma non sono sicuro se T
è consentito essere tipo integrale. In realtà, penso che questi abbiano una semantica diversa:
std::valarray<double>(0.0, 3);
std::valarray<double>{0.0, 3};
Ci sono alcuni altri modelli di classe C ++ standard che prendono un std::initializer_list<T>
Come argomento, ma non credo che nessuno di questi abbia un costruttore sovraccarico che verrebbe usato quando si usa parentesi anziché parentesi graffe.