为什么会出错:Test::Test: no overloaded function takes 2 arguments
class Test
{
public:
Test(const std::vector<int>&)
{
}
};
Test test(boost::assign::list_of(4));
答案 0 :(得分:4)
boost :: assign :: list_of的实现要求容器类型(在本例中为Test类)具有两个参数构造函数,该构造函数采用第一个和最后一个迭代器(aka范围)来初始化容器。
具体来说,错误来自下面一行,在boost :: assign_detail :: converter类的转换方法中返回Container:
template< class Container >
Container convert( const Container*, default_type_tag ) const
{
return Container( begin(), end() );
}
hmjd的解决方法成功的原因是std :: vector有一个构造函数需要两个迭代器。