ошибка компиляции nvcc и библиотека BOOST - PullRequest
0 голосов
/ 16 декабря 2011

бросков nvcc

/usr/include/boost/concept/detail/has_constraints.hpp:29: error: ‘&’ cannot appear in a constant-expression
/usr/include/boost/concept/detail/has_constraints.hpp:29: error: template argument 2 is invalid

has_constraints.hpp уже содержит подозрительный код:

#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580)
  // Work around the following bogus error in Sun Studio 11, by
  // turning off the has_constraints function entirely:
  //    Error: complex expression not allowed in dependent template
  //    argument expression
  inline no has_constraints_(...);
#else
  template <class Model>
  inline yes has_constraints_(Model*, wrap_constraints<Model,&Model::constraints>* = 0);
  inline no has_constraints_(...);
#endif

Вопрос: это nvcc boost несовместимость или может быть что-то не так с моим кодом?

Ответы [ 3 ]

1 голос
/ 20 декабря 2011

У меня есть патч здесь http://code.google.com/p/asadchev/source/browse/trunk/projects/boost/boost-1.46.0.nvcc.patch

Возможно, вы сможете увидеть, что изменилось, и исправить свой код аналогичным образом

Имейте в виду, что источник виден как компилятором gcc-подобной, так и яйцеподобной частей.

1 голос
/ 16 декабря 2011

Почему у вас есть "&" перед "Model :: constraints"? Я думаю, что это проблема. (// это не очевидно)

EDIT:

http://forums.nvidia.com/index.php?showtopic=182890 поговорите об этой проблеме и сделайте несколько обходных маневров

http://forums.nvidia.com/index.php?showtopic=150025

EDIT2:

Что ж, после некоторого бега вокруг этого я придерживаюсь:

http://forums.nvidia.com/index.php?showtopic=215470 «Существует известная проблема совместимости с boost и nvcc. Обходным путем является разделение исходных кодов таким образом, что вы компилируете код cuda с помощью nvcc, а код boost с помощью компилятора хоста». Джастин Луитженс из группы: сотрудники NVIDIA

Попробуйте, но если вы не можете заставить его работать, скомпилируйте отдельно, а затем свяжите их.

0 голосов
/ 13 января 2012

В конце мы сделали отключение has_constraints_, как в примере, приведенном в вопросе для Sun Studio 11

...