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, /**/ }
//                                          ~^~                ~^~
              );