Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#5671 closed Bugs (fixed)

Intel C++ Composer XE 12 does not support RVALUE_REFERENCES

Reported by: Vladislav <phprus@…> Owned by: John Maddock
Milestone: Boost 1.47.0 Component: config
Version: Boost Release Branch Severity: Showstopper
Keywords: Cc:

Description

Compiler: Intel C++ Composer XE 12 update 4.

Error:

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(275): error: class "boost::exception_ptr" has no suitable copy constructor
              return boost::copy_exception(unknown_exception());
                     ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(282): error: class "boost::exception_ptr" has no suitable copy constructor
              return boost::copy_exception(unknown_exception(e));
                     ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(290): error: class "boost::exception_ptr" has no suitable copy constructor
                  return current_exception_unknown_boost_exception(*be);
                         ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(292): error: class "boost::exception_ptr" has no suitable copy constructor
                  return boost::copy_exception(unknown_exception(e));
                         ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(307): error: class "boost::exception_ptr" has no suitable copy constructor
                      return exception_ptr(shared_ptr<exception_detail::clone_base const>(e));
                             ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(313): error: class "boost::exception_ptr" has no suitable copy constructor
                      return exception_detail::exception_ptr_static_exception_object<bad_alloc_>::e;
                             ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(319): error: class "boost::exception_ptr" has no suitable copy constructor
                      return exception_detail::exception_ptr_static_exception_object<bad_exception_>::e;
                             ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(334): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_ptr(shared_ptr<exception_detail::clone_base const>(e.clone()));
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(339): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(344): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(349): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(354): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(359): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(364): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(369): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(374): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(379): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(384): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(389): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(395): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(400): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(406): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(411): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_unknown_std_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(416): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_unknown_boost_exception(e);
                                 ^

/home/phprus/science/workspace/Boost/libs/boost_1_47_0_beta1/gcc/include/boost/exception/detail/exception_ptr.hpp(421): error: class "boost::exception_ptr" has no suitable copy constructor
                          return exception_detail::current_exception_unknown_exception();

...
And many similar lines

Fix code (file boost/exception/detail/exception_ptr.hpp, class exception_ptr):

        exception_ptr( const exception_ptr & other ):
            ptr_(other.ptr_)
            {
            }

Change History (5)

comment:1 by Vladislav <phprus@…>, 11 years ago

Sorry! This is incorrect fix.

Intel C++ Composer XE 12 update 4 does not support RVALUE_REFERENCES.

Please change file config/compiler/intel.hpp and replace

#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1200)
#  undef  BOOST_NO_RVALUE_REFERENCES
//#  undef  BOOST_NO_SCOPED_ENUMS  // doesn't really work!!

to:

#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1200)
//#  undef  BOOST_NO_RVALUE_REFERENCES  // doesn't really work!!
//#  undef  BOOST_NO_SCOPED_ENUMS  // doesn't really work!!

Without this fix is not compiling boost.filesystem too.

comment:2 by Vladislav <phprus@…>, 11 years ago

Component: exceptionconfig
Owner: changed from Emil Dotchevski to John Maddock
Summary: class "boost::exception_ptr" has no suitable copy constructorIntel C++ Composer XE 12 does not support RVALUE_REFERENCES

Old summaty: "class "boost::exception_ptr" has no suitable copy constructor"

comment:3 by John Maddock, 11 years ago

Resolution: fixed
Status: newclosed

(In [72953]) RValue references don't really work correctly with Intel's compiler - disable support for them for now as enabling it breaks the Filesystem and Exception libraries. Fixes #5671. See Intel support issue #636018.

comment:4 by Vladislav <phprus@…>, 11 years ago

Tell please, this patch will get into release 1.47.0?

comment:5 by John Maddock, 11 years ago

Probably too late, but I've asked.

Note: See TracTickets for help on using tickets.