BOOST_MPL_ASSERT expects a metafunction predicate, i.e. a metafunction whose return type can be interpreted either as "true" or "false", that is, whose return type is for example either boost::mpl::true_ or boost::mpl::false.
as defined, the type "asdf" attends to this requirement, so there's no need to explicitly check it against any metaprograming abstraction for "true", writing BOOST_MPL_ASSERT(( asdf ))
does exactly what you want.
ofcourse you could also compare it explicitly to "true", if you wanted, but then you had to compare it to boost::mpl::true_, which is not exactly the same type as boost::true_type as you might expect, hence the confusion!