Joh*_*itb 9 c++ constructor explicit equivalence c++11
我在标准C++库中观察到以下向量构造函数
explicit vector(size_type n);
vector(size_type n, const T& value, const Allocator& = Allocator());
Run Code Online (Sandbox Code Playgroud)
有没有理由为什么没有标记第二个构造函数explicit?这编译,让我感觉很糟糕
void f(vector<string>);
int main() {
f({10, "foo"});
}
Run Code Online (Sandbox Code Playgroud)
如果我省略了"foo"它,它就不会编译,这就是我将int和string的一对(复合)值传递给想要一个字符串向量的函数时所期望的.
如果我省略“foo”,它就不会编译,这就是当我将 int 和字符串的一对(复合)值传递给需要字符串向量的函数时所期望的。
不,您不会传递一对 int 和一个字符串,而是创建一个大小为 10 的向量,其中包含“foo”等字符串的内容。没有什么问题吧!我可以想象在某些情况下,创建一个从一开始就包含相等字符串的向量可能很有用。