Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

is_placeholder

Header <boost/is_placeholder.hpp>

Authors

  • Peter Dimov

The header <boost/is_placeholder.hpp> defines the class template boost::is_placeholder<T>. It defines a nested integral constant value which is 0 when T is not a boost::bind placeholder type, and a positive value corresponding to the placeholder index otherwise.

That is, is_placeholder<_1>::value is 1, is_placeholder<_2>::value is 2, and so on.

is_placeholder can be specialized for user types. If it is, boost::bind will recognize these types as placeholders.

namespace boost
{
    template<class T> struct is_placeholder;
}
#include <boost/is_placeholder.hpp>
#include <boost/bind.hpp>

struct arg1_type {};
constexpr arg1_type arg1{};

template<> struct boost::is_placeholder<arg1_type>
{
    static constexpr int value = 1;
};

int f( int x ) { return x + 1; }

int main()
{
    return boost::bind( f, arg1 )( -1 );
}

PrevUpHomeNext