Я работаю над переносом частей библиотеки boost для компиляции в cuda / nvcc в качестве функций устройства.Это включает использование библиотеки Thrust для некоторых вещей, таких как итераторы, массивы и т. Д. Одна проблема, которую я обнаружил, - это ошибка компиляции в библиотеке Thrust, такая как:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include\thrust/iterator/iterator_traits.h(66): error : namespace "boost::std" has no member "ptrdiff_t"
, которая вызывается строкой в Thrust:
typedef std::ptrdiff_t difference_type;
Я могу это исправить, добавив оператор видимости :: перед вызовом std lib, например:
typedef ::std::ptrdiff_t difference_type;
, но, очевидно, не стоит изменять тягу.
Кто-нибудь знает, почему я получаю эту проблему?то есть почему заголовок тяги iterator_traits.h ищет std :: ptrdiff_t внутри пространства имен boost :: std, а не std?Есть ли способ изменить это до того, как я добавлю заголовок тяги?
Нелегко привести здесь минимальный рабочий пример из-за характера переноса большой библиотеки, такой как boost.
Спасибо!