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,