C3321: 初始值设定项列表在此上下文中是意外的
C3321: an initializer list is unexpected in this context
在我的代码中有一些这样的语句:
auto buffer = boost::shared_ptr<std::vector<uint8_t>>(new std::vector<uint8_t>() { 0x0A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x05, 0x00, 0x00 });
使用 Visual Studio 2013 这些行编译没有任何问题。但是 Visual Studio 2015 我得到以下错误:
C3321: an initializer list is unexpected in this context
以上说法有什么问题吗?
New-initializer 语法接受 ()
和内部的可选表达式列表, 或 ,一个花括号的初始化列表,而不是两者,所以只需删除多余的 ()
在打开后面的花括号初始化器列表之前:
auto buffer = boost::shared_ptr<std::vector<uint8_t>>(
new std::vector<uint8_t> { 0x0A, 0x00, /**/ }
// ~^~ ~^~
);
在我的代码中有一些这样的语句:
auto buffer = boost::shared_ptr<std::vector<uint8_t>>(new std::vector<uint8_t>() { 0x0A, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x05, 0x00, 0x00 });
使用 Visual Studio 2013 这些行编译没有任何问题。但是 Visual Studio 2015 我得到以下错误:
C3321: an initializer list is unexpected in this context
以上说法有什么问题吗?
New-initializer 语法接受 ()
和内部的可选表达式列表, 或 ,一个花括号的初始化列表,而不是两者,所以只需删除多余的 ()
在打开后面的花括号初始化器列表之前:
auto buffer = boost::shared_ptr<std::vector<uint8_t>>(
new std::vector<uint8_t> { 0x0A, 0x00, /**/ }
// ~^~ ~^~
);