[Boost-bugs] [Boost C++ Libraries] #7192: [mpl] std::integral_constant support

Subject: [Boost-bugs] [Boost C++ Libraries] #7192: [mpl] std::integral_constant support
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2012-08-02 21:48:07


#7192: [mpl] std::integral_constant support
------------------------------+---------------------------------------------
 Reporter: eric_niebler | Owner: agurtovoy
     Type: Feature Requests | Status: new
Milestone: Boost 1.52.0 | Component: mpl
  Version: Boost 1.51.0 | Severity: Problem
 Keywords: |
------------------------------+---------------------------------------------
 The following reasonable-seeming use of mpl::plus doesn't compile:

 {{{
     #include <utility>
     #include <boost/mpl/plus.hpp>

     typedef std::integral_constant<int, 1> one;
     typedef boost::mpl::plus<one, one>::type two;
 }}}

 That's because mpl only works with its own integral constant wrappers,
 not the standard one. That seems unfortunate to me. Is there any
 interest in supporting this?

 Here's the error (from clang trunk with glibc++):

 {{{
     1> In file included from main.cpp:2:
     1> In file included from
 /home/Eric/boost/org/trunk/boost/mpl/plus.hpp:19:
     1> In file included from
 /home/Eric/boost/org/trunk/boost/mpl/aux_/arithmetic_op.hpp:34:
     1> In file included from
 /home/Eric/boost/org/trunk/boost/mpl/aux_/include_preprocessed.hpp:37:
     1>
 /home/Eric/boost/org/trunk/boost/mpl/aux_/preprocessed/gcc/plus.hpp:60:25:
 error: no type named 'tag' in 'std::integral_constant<int, 1>'
     1> typedef typename T::tag type;
     1> ~~~~~~~~~~~~^~~
     1>
 /home/Eric/boost/org/trunk/boost/mpl/aux_/preprocessed/gcc/plus.hpp:111:20:
 note: in instantiation of template class
 'boost::mpl::plus_tag<std::integral_constant<int, 1> >' requested here
     1> typename plus_tag<N1>::type
     1> ^
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/7192>
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:10 UTC