On Tue, Jun 12, 2012 at 9:11 AM,
Hi list,
I'm trying to use the version of mpl::at with three template parameters, as specified here ( http://www.boost.org/doc/libs/1_46_0/libs/mpl/doc/refmanual/at.html)
But I'm getting a compiler error saying 'boost::mpl::at' : too many template arguments.
What am I doing wrong?
#include
#include #include #include #include using namespace boost; using namespace boost::mpl;
typedef map< pair
, pair , pair ,char[17]> , pair > m; BOOST_MPL_ASSERT_RELATION( size<m>::value, ==, 4 ); BOOST_MPL_ASSERT_NOT(( empty<m> ));
BOOST_MPL_ASSERT(( is_same< at
::type, unsigned > )); BOOST_MPL_ASSERT(( is_same< at >::type, char[17] > )); BOOST_MPL_ASSERT(( is_same< at ::type, bool > )); BOOST_MPL_ASSERT(( is_same< at ::type, void_ > )); BOOST_MPL_ASSERT(( is_same< at
::type, void_ > )); // fails!
It seems there is a discrepancy between the documentation and the code; if you take a look at boost/mpl/at_fwd.hpp, it forward declares boost::mpl::at with only 2 template parameters :( Please file a trac ticket, and I'll try to find out what the correct resolution is on the developer's list. - Jeff