在仿函数中实现引用

时间:2016-07-15 16:13:40

标签: c++ functor

我一直在尝试实现找到here的最佳答案代码,但它一直给我错误“智能感知:类模板的参数列表”sort_vector“缺少”我正在尝试的行在下面设置我的参考。

float answer = 0;
sort_vector s(&answer);

我正在使用此代码启动我的结构

thrust::for_each(thrust::cuda::par.on(s1),
    d_idxs.begin(),
    d_idxs.end(), sort_vector<float>(thrust::raw_pointer_cast(d_Ndata.data()), thrust::raw_pointer_cast(d_Ddata.data()), s));

我的结构设置如下

template <typename T> 
struct sort_vector
{

    T *Ndata;
    T *Ddata;

    sort_vector(T *_Ndata, T *_Ddata, float *a) : Ndata(_Ndata), Ddata(_Ddata), answer(a) {};
    float *answer;

    __host__ __device__ void operator()(int idx)
    {
        thrust::sort(thrust::seq, Ndata + idx*num_vals, Ndata + ((idx + 1)*num_vals));
        thrust::sort(thrust::seq, Ddata + idx*num_vals, Ddata + ((idx + 1)*num_vals));
        *answer = thrust::reduce(thrust::device, Ddata + idx*num_vals, Ddata + ((idx + 1)*num_vals));

    }
};

我似乎无法弄清楚为什么他们的代码有效,而我的代码却没有。我想也许我错过了一个包含,但是查看了实现相同代码行的其他代码并使用了它们的包含

#include <vector>
#include <algorithm>
#include <iostream>

但它仍然没有用。

0 个答案:

没有答案