我假设,您的例子 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>
作为参数,但我认为其中任何一个都没有一个超载的构造函数,当使用括号而不是牙套时,它将使用。