C++11 initializer_list error
C++11 initializer_list error
考虑以下代码:
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<std::string> v{{"awe", "kjh"}}; // not v{"awe", "kjh"}
std::cout << v.size() << std::endl;
return 0;
}
这个代码是错误的吗?或者在初始化向量时使用双
{}
是有效的?我在gcc和MSVC上尝试了这个代码。MSVC 2012 +编译器2012年11月只是不能编译它,这并不奇怪。使用gcc 4.7或4.8编译的这段代码会在程序执行期间产生运行时错误。这种行为正确吗?
注意,您的初始化相当于:
std::vector<std::string> v{std::string{"awe", "kjh"}};
// not: std::vector<std::string> v{std::string{"awe"}, std::string{"kjh"}};
标准不要求std::string
类型实现的构造函数,因此基于特定的STD实现,我猜代码可以做不同的事情。
问候,div, rzej
内部{}
被视为std::string构造函数。如果您只执行
std::string> s{"awe", "kjh"};
相关文章:
- 使用std::multimap迭代器创建std::list
- "error: no matching function for call to"构造函数错误
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- C++中带有List类的迭代器Segfault
- 使用"std::unordereded_map"映射到"std::list"对象
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- GCC对可能有效的代码抛出init list生存期警告
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用std::list创建循环链表
- 重载Singly Linked List中的赋值运算符
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 将static_pointer_cast添加到<Derived> std::list<shared_ptr<Base>> 会导致称为 error 的纯虚拟方法
- 递归调用中出现错误"[Error] expression list treated as compound expression in initializer [-fpermissive]"
- 如何修复'Size of list( a class) is unknown or zero error'和"声明语法错误"?
- (C++) list.error 方法和使用指针删除内存
- C++ - 使用模板时'error C2064' <list>
- Error in C++ list::sort
- My C++ List[ArrayImplementation] Error