У меня есть следующий код CUDA:
enum METHOD_E {
METH_0 = 0,
METH_1
};
template <enum METHOD_E METH>
inline __device__ int test_func<METH>()
{
return int(METH);
}
__global__ void test_kernel()
{
test_func<METH_0>();
}
void test()
{
test_kernel<<<1, 1>>>();
}
При компиляции я получаю следующую ошибку:
>nvcc --cuda test.cu
test.cu
test.cu(7): error: test_func is not a template
test.cu(14): error: identifier "test_func" is undefined
test.cu(14): error: expected an expression
3 errors detected in the compilation of "C:/Users/BLAH45~1/AppData/Local/Temp/tm
pxft_00000b60_00000000-6_test.cpp1.ii".
В разделе D.1.4 Руководства по программированию (4.0, версия набора инструментов, который я использую) предлагается, чтобы шаблоны работали, но я не могу их получить.
Может кто-нибудь предложить изменение в этом коде, которое заставит его скомпилироваться (без удаления шаблонов!)?