C++模糊模板实例化

Any*_*orn 3 c++ templates

下面给出了使用nvcc(EDG前端和g ++的组合)的模糊模板实例化.它真的很模糊,还是编译器错了?我还发布了解决方案àlaboost :: enable_if

template<typename T> struct disable_if_serial { typedef void type; };
template<> struct disable_if_serial<serial_tag> { };

template<int M, int N, typename T>
__device__
//static typename disable_if_serial<T>::type
void add_evaluate_polynomial1(double *R,
                         const double (&C)[M][N], double x,
                         const T &thread) {
    // ...
}

template<size_t M, size_t N>
__device__
static void add_evaluate_polynomial1(double *R,
                                     const double (&C)[M][N], double x,
                                     const serial_tag&) {
    for (size_t i = 0; i < M; ++i)
        add_evaluate_polynomial1(R, C, x, i);
}

// ambiguous template instantiation here.
add_evaluate_polynomial1(R, C, x, serial_tag());  
Run Code Online (Sandbox Code Playgroud)

jpa*_*cek 5

据我所知,问题是,你必须在无类型参数不一致类型(即,MNint这里的,但size_t在那里).这意味着并非所有模板变量赋值都可以在另一个中使用,这意味着没有部分排序,因此错误消息.

联合模板非类型参数类型,它应该工作.