あなたの例で、私は仮定します std::vector<int>
と std::string
あなたは他の容器もカバーするつもりでした、例えば std::list<int>
, std::deque<int>
, 、同じ問題を抱えているなど、明らかに、 std::vector<int>
. 。同様に、 int
適用される唯一のタイプではありません char
, short
, long
そして彼ら unsigned
バージョン(おそらく他のいくつかの積分タイプも)。
あると思います std::valarray<T>
しかし、私にはわかりません T
積分タイプになることが許可されています。実際、これらには異なるセマンティクスがあると思います。
std::valarray<double>(0.0, 3);
std::valarray<double>{0.0, 3};
他にもいくつかの標準C ++クラステンプレートがあります std::initializer_list<T>
議論として、しかし、これらのいずれかは、ブレースの代わりに括弧を使用するときに使用される過負荷コンストラクターを持っているとは思わない。