Suponho, com seus exemplos para std::vector<int>
e std::string
você pretendia também cobrir os outros recipientes, por exemplo, std::list<int>
, std::deque<int>
, etc. que têm o mesmo problema, obviamente, como std::vector<int>
. Da mesma forma, o int
não é o único tipo que também se aplica a char
, short
, long
e deles unsigned
Versão (possivelmente alguns outros tipos integrais também).
Eu acho que há também std::valarray<T>
Mas não tenho certeza se T
é permitido ser o tipo integral. Na verdade, acho que eles têm semântica diferente:
std::valarray<double>(0.0, 3);
std::valarray<double>{0.0, 3};
Existem alguns outros modelos de classe C ++ padrão que tomam um std::initializer_list<T>
Como argumento, mas não acho que nenhum deles tenha um construtor sobrecarregado que seria usado ao usar parênteses em vez de aparelho.