[base_from_member][sun-next_cpp11] problem with variadics at base_from_member
Hi, In 2012, boost::base_from_member was equipped with variadics machinery to perfect-forward construction arguments to the contained member. Unfortunately, Solaris Studio 12.5 on Intel chokes on it (http://tinyurl.com/no7trgb ): "../boost/utility/base_from_member.hpp", line 137: Error: Parameter pack 'x' not expanded with '...' [...] Oddly enough, the same compiler does work fine on Sparc. May I suggest that lines 129-132 of boost/utility/base_from_member.hpp #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && \ !(defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4)) be added a special provision for this environment (the same way it already has for GCC 4 and prior)? #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && \ !(defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4)) && \ !(defined(__SUNPRO_CC) && defined(__i386) && (__SUNPRO_CC <= 0x5140)) I can't unfortunately test this myself as I don't have access to the compiler. FWIW, my interest in having this fixed is that it's seemingly the only bug preventing Oracle Solaris Studio 12.5 on Intel from supporting Boost.MultiIndex. Joaquín M López Muñoz Telefónica
On 11/01/15 04:29, Joaquín M LópezMuñoz wrote:
Hi,
In 2012, boost::base_from_member was equipped with variadics machinery to perfect-forward construction arguments to the contained member. Unfortunately, Solaris Studio 12.5 on Intel chokes on it (http://tinyurl.com/no7trgb ):
"../boost/utility/base_from_member.hpp", line 137: Error: Parameter pack 'x' not expanded with '...' [...]
Oddly enough, the same compiler does work fine on Sparc. May I suggest that lines 129-132 of boost/utility/base_from_member.hpp
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && \ !(defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4))
be added a special provision for this environment (the same way it already has for GCC 4 and prior)?
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && \ !(defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4)) && \ !(defined(__SUNPRO_CC) && defined(__i386) && (__SUNPRO_CC <= 0x5140))
I can't unfortunately test this myself as I don't have access to the compiler. FWIW, my interest in having this fixed is that it's seemingly the only bug preventing Oracle Solaris Studio 12.5 on Intel from supporting Boost.MultiIndex. Thank you for reporting this. I will follow up on this.
Aparna
Joaquín M López Muñoz Telefónica
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On 11/01/15 04:29, Joaquín M LópezMuñoz wrote:
Hi,
In 2012, boost::base_from_member was equipped with variadics machinery to perfect-forward construction arguments to the contained member. Unfortunately, Solaris Studio 12.5 on Intel chokes on it (http://tinyurl.com/no7trgb ):
"../boost/utility/base_from_member.hpp", line 137: Error: Parameter pack 'x' not expanded with '...' [...]
Oddly enough, the same compiler does work fine on Sparc. It is indeed strange that it works for sparc-S2 platform but not intel-S2.On looking into this further, the results for intel-S2 platform were from 10/15/2015. The latest results from 10/27/2015 are uploaded (runner oracle-intel-S2-12.5-cpp11) and the test passes without the modification below. See http://www.boost.org/development/tests/master/developer/utility.html
Thanks, Aparna
May I suggest that lines 129-132 of boost/utility/base_from_member.hpp
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && \ !(defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4))
be added a special provision for this environment (the same way it already has for GCC 4 and prior)?
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && \ !(defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 4)) && \ !(defined(__SUNPRO_CC) && defined(__i386) && (__SUNPRO_CC <= 0x5140))
I can't unfortunately test this myself as I don't have access to the compiler. FWIW, my interest in having this fixed is that it's seemingly the only bug preventing Oracle Solaris Studio 12.5 on Intel from supporting Boost.MultiIndex.
Joaquín M López Muñoz Telefónica
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Aparna Kumta
On 11/01/15 04:29, Joaquín M LópezMuñoz wrote:
Hi,
In 2012, boost::base_from_member was equipped with variadics machinery to perfect-forward construction arguments to the contained member. Unfortunately, Solaris Studio 12.5 on Intel chokes on it (http://tinyurl.com/no7trgb ):
"../boost/utility/base_from_member.hpp", line 137: Error: Parameter pack 'x' not expanded with '...' [...]
Oddly enough, the same compiler does work fine on Sparc.
It is indeed strange that it works for sparc-S2 platform but not intel-S2.On looking into this further, the results for intel-S2 platform were from 10/15/2015. The latest results from 10/27/2015 are uploaded (runner oracle-intel-S2-12.5-cpp11) and the test passes without the modification below. See http://www.boost.org/development/tests/master/developer/utility.html
Yes, I see. I've taken a cursory look at the commits on Boost code that might be related with this different behavior (utility, config, type_traits) and found nothing to justify it. Anyway, if the thing goes away so much the better! Thank you, Joaquín M López Muñoz Telefónica
participants (3)
-
Aparna Kumta
-
Joaquin M López Muñoz
-
Joaquín M López Muñoz