多个重载函数的实例

时间:2018-05-28 02:35:09

标签: c++ compilation cuda clang

我正在尝试使用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而不是产生冲突。

对此的任何线索都将非常感激。

1 个答案:

答案 0 :(得分:2)

我记得,这实际上是一个Clang问题。使用Clang 3.8和gcc 6标准库头文件在C ++ 11模式下进行编译将触发此问题。如果您切换到支持的gcc 5版本,或者没有指定C ++ 11支持,则问题将消失。