有什么办法可以一起boost::bind
工作std::fill
吗?
我尝试了以下方法,但没有奏效:
boost::bind(std::fill, x.begin(), x.end(), 1);
问题是这std::fill
是一个模板函数。可以说,模板函数在被实例化之前并不真正存在。你不能取地址,std::fill
因为它并不真正存在;它只是使用不同类型的类似功能的模板。如果您提供模板参数,它将引用模板的特定实例化,一切都会好起来的。
该std::fill
函数有两个模板参数:ForwardIteratorType,它是容器的迭代器的类型,以及DataType,它是容器持有的类型。您需要同时提供两者,以便编译器知道std::fill
您要使用模板的哪个实例化。
std::vector<int> x(10);
boost::bind(std::fill<std::vector<int>::iterator, int>, x.begin(), x.end(), 1);