C3321:初始化列表在此上下文中是意外的

时间:2015-09-09 12:22:16

标签: c++ c++11 visual-c++ visual-studio-2015

在我的代码中,我有一些这样的陈述:

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:初始化程序列表在此上下文中是意外的

上述陈述有什么问题?

1 个答案:

答案 0 :(得分:3)

New-initializer语法接受带有可选表达式列表的(),一个支撑的初始化列表,而不是两者,所以在打开之前删除多余的()随后的括号初始化列表:

auto buffer = boost::shared_ptr<std::vector<uint8_t>>(
                    new std::vector<uint8_t> { 0x0A, 0x00, /**/ }
//                                          ~^~                ~^~
              );