| Front Page / Metafunctions / Composition and Argument Binding / protect | 
protect is an identity wrapper for a Metafunction Class that prevents its argument from being recognized as a bind expression.
#include <boost/mpl/protect.hpp>
| Parameter | Requirement | Description | 
|---|---|---|
| F | Metafunction Class | A metafunction class to wrap. | 
For any Metafunction Class f:
typedef protect<f> g;
| Return type: | |
|---|---|
| Semantics: | If f is a bind expression, equivalent to 
struct g
{
    template<
          typename U1 = unspecified,... typename Un = unspecified
        >
    struct apply
        : apply_wrapn<f,U1,...Un>
    {
    };
};
otherwise equivalent to typedef f g;. | 
struct f
{
    template< typename T1, typename T2 > struct apply
    {
        typedef T2 type;
    };
};
typedef bind< quote3<if_>,_1,_2,bind<f,_1,_2> > b1;
typedef bind< quote3<if_>,_1,_2,protect< bind<f,_1,_2> > > b2;
typedef apply_wrap2< b1,false_,char >::type r1;
typedef apply_wrap2< b2,false_,char >::type r2;
BOOST_MPL_ASSERT(( is_same<r1,char> ));
BOOST_MPL_ASSERT(( is_same<r2,protect< bind<f,_1,_2> > > ));