无法编译仿函数模板

时间:2012-09-13 10:33:46

标签: c++

我试图定义一个函数

template<typename Functor> static void start(DataSize size, ThreadNum threadNum, Functor f)
{
    ....

    std::for_each<int>(allocated, size, f);

    ....
}

已分配和大小只是int。

来电者调用该功能

start(image.width() * image.height(), _threads, RGBHistogramFun<T>(image, hist));

template<typename T> class RGBHistogramFun
{
    ...

    void operator()(std::size_t i)
    {
        ....
    }
}

我将T设置为模板的int。我试图定义std :: for_each,以便为分配给size的每个整数调用RGBHistogramFun :: operator(std :: size_t i)。 operator()将使用索引来操作其内部数组数据。

但是,我的编译器错误是关于xutility的。

1 个答案:

答案 0 :(得分:3)

n3337 25.2.4

template<class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function f);

效果:将f应用于[first,last]范围内的解除引用每个迭代器的结果,开始  从第一个开始到最后一个 - 1。

int不能是dereferenced