Более одного экземпляра перегруженной функции - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь скомпилировать библиотеку, которая использует CUDA, в системе Ubuntu, используя CUDA 8.0 и clang 3.8.Библиотека включает в себя 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 голосов
/ 28 мая 2018

Насколько я помню, это на самом деле проблема Clang.Компиляция в режиме C ++ 11 с заголовками стандартных библиотек Clang 3.8 и gcc 6 вызовет проблему.Если вы переключитесь на поддерживаемую версию gcc 5 или не включите поддержку C ++ 11, проблема исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...