在我的代码中,我有一些这样的陈述:
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:初始化程序列表在此上下文中是意外的
上述陈述有什么问题?
答案 0 :(得分:3)
New-initializer语法接受带有可选表达式列表的()
,或,一个支撑的初始化列表,而不是两者,所以在打开之前删除多余的()
随后的括号初始化列表:
auto buffer = boost::shared_ptr<std::vector<uint8_t>>(
new std::vector<uint8_t> { 0x0A, 0x00, /**/ }
// ~^~ ~^~
);