Boost logo

Boost :

Subject: Re: [boost] [mpl] at<> example bug?
From: Mostafa (mostafa_working_away_at_[hidden])
Date: 2013-08-06 18:12:18


On Tue, 06 Aug 2013 14:12:09 -0700, Steven Watanabe <watanabesj_at_[hidden]>
wrote:

> AMDG
>
> On 08/06/2013 12:47 PM, Mathias Gaunard wrote:
>> On 06/08/13 01:52, Mostafa wrote:
>>> Looks like the example found here:
>>> http://www.boost.org/doc/libs/1_54_0/libs/mpl/doc/refmanual/at.html is
>>> buggy:
>>>
>>> BOOST_MPL_ASSERT_RELATION( (at< range, int_<0> >::value), ==, 10 );
>>>
>>> It should be:
>>>
>>> BOOST_MPL_ASSERT_RELATION( (at< range, int_<0> >::type::value), ==, 10
>>> );
>>
>> Both should work.
>>
>
> That's only for arithmetic functions.
>

Steven, sorry I don't understand what you're trying to say. Mathias, on
Win7/Cygwin g++ 4.7.3 I get the following results, which contradict the
example on the boost web page:

#include <boost/mpl/range_c.hpp>
#include <boost/mpl/at.hpp>
#include <boost/mpl/int.hpp>

#include <boost/mpl/assert.hpp>

int main()
{
   namespace bm = boost::mpl;

   typedef bm::range_c<long,10,50> range;

   //Does not compile.
   //bm::at<range, bm::int_<0> >::value == 10;

   //Compiles.
   //bm::at<range, bm::int_<0> >::type::value == 10;

   using namespace boost::mpl;

   //Does not compile.
   //BOOST_MPL_ASSERT_RELATION( (at< range, int_<0> >::value), ==, 10 );

   //Compiles.
   BOOST_MPL_ASSERT_RELATION( (at< range, int_<0> >::type::value), ==, 10 );

   return 0;
}


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk