使用boost :: assign :: list_of

Baz*_*Baz 12 c++ boost c++98

这编译:

std::vector<int> value = boost::assign::list_of(1)(2);
Run Code Online (Sandbox Code Playgroud)

但不是这个:

Constructor(std::vector<int> value)
{
}

Constructor (boost::assign::list_of(1)(2));
Run Code Online (Sandbox Code Playgroud)

是否有一个单线程解决方案来初始化传递给构造函数的向量?

更好的是,如果构造函数通过引用而复制到类变量:

Constructor(std::vector<int>& value)
{
    _value = value;
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

如果我尝试以下方法:

enum Foo
{
    FOO_ONE, FOO_TWO 
};

class Constructor
{
public:
    Constructor(const std::vector<Foo>& value){}
};

Constructor c(std::vector<Foo>(boost::assign::list_of(FOO_ONE)));
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

error C2440: '<function-style-cast>' : cannot convert from 'boost::assign_detail::generic_list<T>' to 'std::vector<_Ty>'
1>          with
1>          [
1>              T=Foo
1>          ]
1>          and
1>          [
1>              _Ty=Foo
1>          ]
1>          No constructor could take the source type, or constructor overload resolution was ambiguous
Run Code Online (Sandbox Code Playgroud)

Sve*_*ven 20

这是一个烦人的问题,我们还有一段时间.我们使用以下convert_to_container方法修复它:

Constructor c(boost::assign::list_of(1)(2).convert_to_container<std::vector<int> >() );
Run Code Online (Sandbox Code Playgroud)

在构造函数使用std :: list还有更多问题.请参阅使用boost将list std :: list转换为构造函数,list_of无法编译以获得相应的答案.