我正在尝试使用CUDA 8.0和clang 3.8在Ubuntu系统上编译使用CUDA的库。
该库包含多个Eigen
文件中的*.cu
个标头,显然包含cmath
标头,导致CUDA标头中存在歧义。
/usr/local/cuda-8.0/include/cuda_fp16.h(3068): error: more than one instance of overloaded function "isinf" matches the argument list:
function "std::isinf(float)"
function "isinf(float)"
argument types are: (float)
CUDA定义了自己的__device__ __RETURN_TYPE isinf ( float a )
,我希望必须明确调用std::isinf
而不是产生冲突。
对此的任何线索都将非常感激。
答案 0 :(得分:2)
我记得,这实际上是一个Clang问题。使用Clang 3.8和gcc 6标准库头文件在C ++ 11模式下进行编译将触发此问题。如果您切换到支持的gcc 5版本,或者没有指定C ++ 11支持,则问题将消失。