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