c++ - 不止一个重载函数实例

标签 c++ compilation cuda clang

我正在尝试在使用 CUDA 8.0 和 clang 3.8 的 Ubuntu 系统上编译一个使用 CUDA 的库。 该库在多个 *.cu 文件中包含 Eigen header ,其中显然包含 cmath header ,导致 CUDA header 中出现歧义。

/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 必须显式调用而不是产生冲突.

任何有关这方面的线索将不胜感激。

最佳答案

我记得,这实际上是一个 Clang 问题。使用 Clang 3.8 和 gcc 6 标准库头文件以 C++11 模式编译将触发该问题。如果切换到支持的 gcc 5 版本,或者不指定 C++11 支持,问题就会消失。

关于c++ - 不止一个重载函数实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50558411/

相关文章:

c++ - 菱形继承 - 传递叶类对象作为参数代替根类

c++ - 时髦的调试,这里发生了什么?

c++ - 使用原生 CUDA 支持 CMake 在 C++ 目标中获取 CUDA 包含目录?

vmware - VMware 上的 cuda 程序

cuda - .cpp 和 .cu 文件的 NVCC 行为

c++ - N 皇后的解决方案是不正确的,我不知道为什么

c++ - 不同结构的静态大小数组

java - 如何编译不同包中的一组java文件,然后使用命令行构建.jar文件?

带有 varargs 的 Java 编译错误

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?