[mpl] equal_to compile problems

Hi, my first steps in mpl are very rough. I have enum { RELEASE_LEVEL = (10 << 4), ... }; and want to check on an appropriate enum number: #include <boost/mpl/equal_to.hpp> #include <boost/mpl/int.hpp> #include <boost/mpl/placeholders.hpp> namespace { namespace mpl = boost::mpl; using namespace mpl::placeholders; typedef mpl::equal_to<_1, mpl::int_<0xC> >::type release_candidate; } ... if(release_candidate<RELEASE_LEVEL>::value) return a; else return b; which doesn't compile. Where is my fault and how can I fix it? Thanks, Olaf

AMDG Olaf Peter wrote:
typedef mpl::equal_to<_1, mpl::int_<0xC> >::type release_candidate;
Don't use ::type here: typedef mpl::equal_to<_1, mpl::int_<0xC> > release_candidate;
if(release_candidate<RELEASE_LEVEL>::value)
Use apply and the integral wrappers: if(mpl::apply<release_candidate, mpl::int_<RELEASE_LEVEL> >::value) In Christ, Steven Watanabe

Steven Watanabe schrieb:
AMDG
Olaf Peter wrote:
typedef mpl::equal_to<_1, mpl::int_<0xC> >::type release_candidate;
Don't use ::type here:
typedef mpl::equal_to<_1, mpl::int_<0xC> > release_candidate;
if(release_candidate<RELEASE_LEVEL>::value)
Use apply and the integral wrappers:
if(mpl::apply<release_candidate, mpl::int_<RELEASE_LEVEL> >::value)
must be: if(mpl::apply<release_candidate, mpl::int_<RELEASE_LEVEL> >::type::value) to compile. Thanks, Olaf
participants (2)
-
Olaf Peter
-
Steven Watanabe