Ich nehme an, mit Ihren Beispielen für std::vector<int>
und std::string
Sie wollten auch die anderen Behälter abdecken, z. B. std::list<int>
, std::deque<int>
, usw., die offensichtlich das gleiche Problem haben wie std::vector<int>
. Ebenso das int
ist nicht der einzige Typ, wie es auch gilt char
, short
, long
und ihre unsigned
Version (möglicherweise auch einige andere integrale Typen).
Ich denke es gibt es auch std::valarray<T>
Aber ich bin mir nicht sicher, ob T
darf integraler Typ sein. Eigentlich denke ich, dass diese unterschiedliche Semantik haben:
std::valarray<double>(0.0, 3);
std::valarray<double>{0.0, 3};
Es gibt einige andere Standard -C ++ - Klassenvorlagen, die eine annehmen std::initializer_list<T>
als Argument, aber ich glaube nicht, dass einer davon einen überlasteten Konstruktor hat, der bei der Verwendung von Klammern anstelle von Klammern verwendet wird.