id summary reporter owner description type status milestone component version severity resolution keywords cc 13472 Bad feature detection for nvcc and clang as a host compiler. Jakub Klener John Maddock "Boost feature detection is wrong if the source is compiled with nvcc and clang as host compiler. For example, move semantics can't be used with c++11 enabled. {{{ #include #include class TestClass { public: TestClass() = default; TestClass(const TestClass &) = delete; TestClass(TestClass &&) = default; }; int main() { TestClass c1; boost::variant v{std::move(c1)}; return 0; } }}} When compiled with (ubuntu 16.04, gcc 5.4, CUDA 9.1): {{{ nvcc temp.cu -o temp -ccbin=/usr/bin/gcc -std=c++11 }}} everything works well, but {{{ nvcc temp.cu -o temp -ccbin=/usr/bin/clang-4.0 -std=c++11 }}} fails with the following: {{{ /usr/include/boost/variant/detail/initializer.hpp(110): error: function ""TestClass::TestClass(const TestClass &)"" temp.cu(10): here cannot be referenced -- it is a deleted function detected during: instantiation of ""int boost::detail::variant::make_initializer_node::apply::initializer_node::initialize(void *, boost::detail::variant::make_initializer_node::apply::initializer_node::param_T) [with BaseIndexPair=boost::mpl::pair>, Iterator=boost::mpl::l_iter>]"" /usr/include/boost/variant/variant.hpp(1538): here instantiation of ""void boost::variant::convert_construct(T &, int, mpl_::false_) [with T0_=TestClass, T1=boost::detail::variant::void_, T2=boost::detail::variant::void_, T3=boost::detail::variant::void_, T4=boost::detail::variant::void_, T5=boost::detail::variant::void_, T6=boost::detail::variant::void_, T7=boost::detail::variant::void_, T8=boost::detail::variant::void_, T9=boost::detail::variant::void_, T10=boost::detail::variant::void_, T11=boost::detail::variant::void_, T12=boost::detail::variant::void_, T13=boost::detail::variant::void_, T14=boost::detail::variant::void_, T15=boost::detail::variant::void_, T16=boost::detail::variant::void_, T17=boost::detail::variant::void_, T18=boost::detail::variant::void_, T19=boost::detail::variant::void_, T=const TestClass]"" /usr/include/boost/variant/variant.hpp(1683): here instantiation of ""boost::variant::variant(const T &) [with T0_=TestClass, T1=boost::detail::variant::void_, T2=boost::detail::variant::void_, T3=boost::detail::variant::void_, T4=boost::detail::variant::void_, T5=boost::detail::variant::void_, T6=boost::detail::variant::void_, T7=boost::detail::variant::void_, T8=boost::detail::variant::void_, T9=boost::detail::variant::void_, T10=boost::detail::variant::void_, T11=boost::detail::variant::void_, T12=boost::detail::variant::void_, T13=boost::detail::variant::void_, T14=boost::detail::variant::void_, T15=boost::detail::variant::void_, T16=boost::detail::variant::void_, T17=boost::detail::variant::void_, T18=boost::detail::variant::void_, T19=boost::detail::variant::void_, T=TestClass]"" temp.cu(17): here 1 error detected in the compilation of ""/tmp/tmpxft_00005819_00000000-8_temp.cpp1.ii"". }}} If I change `boost/config/select_compiler_config.hpp` {{{ 42 #elif defined __clang__ && !defined(__CUDACC__) }}} to {{{ 42 #elif defined __clang__ }}} everything works well." Bugs closed To Be Determined config Boost 1.58.0 Problem obsolete clang nvcc