[Boost-bugs] [Boost C++ Libraries] #11815: boost::config defines BOOST_NO_CXX11_RVALUE_REFERENCES under icc 15

Subject: [Boost-bugs] [Boost C++ Libraries] #11815: boost::config defines BOOST_NO_CXX11_RVALUE_REFERENCES under icc 15
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-11-22 00:10:08


#11815: boost::config defines BOOST_NO_CXX11_RVALUE_REFERENCES under icc 15
------------------------------+-------------------------
 Reporter: nmusolino@… | Owner: johnmaddock
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: config
  Version: Boost 1.56.0 | Severity: Problem
 Keywords: icc |
------------------------------+-------------------------
 When compiling with icc version 15.0.4 under the C++11 standard, the macro
 BOOST_NO_CXX11_RVALUE_REFERENCES is defined, even though icc supports
 rvalue references.

 I discovered this when attempting to use the intrusive_ptr class
 template's move constructor, so I created a demonstration that uses
 intrusive_ptr.

 {{{
 $ icc --version
 icc (ICC) 15.0.4 20150805
 icc -I/path/to/boost/1.56.0/include/ -std=c++11 ./intrusive_ptr_test.cpp
 -o intrusive_ptr_test_icc

 $ ./intrusive_ptr_test_icc
 __cplusplus: 201103
 BOOST_VERSION: 105600
 std::is_nothrow_move_constructible<S_ptr>: false
 BOOST_NO_CXX11_RVALUE_REFERENCES: <undefined>
 __INTEL_COMPILER: 1500
 BOOST_INTEL_CXX_VERSION: 1500
 }}}

 I expected that BOOST_NO_CXX11_RVALUE_REFERENCES would not be defined,
 because this version of icc [https://software.intel.com/en-us/articles
 /c0x-features-supported-by-intel-c-compiler supports rvalue references].

 When built using g++ 5.2.0, the macro is not defined, so the intrusive_ptr
 class template is nothrow-move-constructible.

 {{{
 $ g++ --version
 g++ (TPM built 20150717) 5.2.0
 Copyright (C) 2015 Free Software Foundation, Inc.
 $ g++ -I/path/to/boost/1.56.0/include/ -std=c++11 ./intrusive_ptr_test.cpp
 -o intrusive_ptr_test_gcc

 $ ./intrusive_ptr_test_gcc
 __cplusplus: 201103
 BOOST_VERSION: 105600
 std::is_nothrow_move_constructible<S_ptr>: true
 BOOST_NO_CXX11_RVALUE_REFERENCES: <undefined>
 }}}


 I believe this is the same problem reported in
 [https://svn.boost.org/trac/boost/ticket/9829 ticket #9829].

 This problem does not occur in boost 1.58.0.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/11815>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:19 UTC