没有重载函数使用boost :: assign :: list_of需要2个参数错误

时间:2012-11-16 16:54:44

标签: c++ boost

为什么会出错:Test::Test: no overloaded function takes 2 arguments

class Test
{
public:
    Test(const std::vector<int>&)
    {
    }
};

Test test(boost::assign::list_of(4));

1 个答案:

答案 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有一个构造函数需要两个迭代器。

相关问题