Defines Proto callables ``boost::proto::functional::make_pair``, ``boost::proto::functional::first`` and ``boost::proto::functional::second``.

A PolymorphicFunctionObject type that invokes `std::make_pair()` on its arguments.

A PolymorphicFunctionObject type that invokes `std::make_pair()` on its arguments.

`proto::callable`
This(First, Second)
std::pair< typename boost::remove_const<typename boost::remove_reference<First>::type>::type , typename boost::remove_const<typename boost::remove_reference<Second>::type>::type >
typename std::pair< First, Second > `First const &` `Second const &`

`std::make_pair(first, second)`

A PolymorphicFunctionObject type that returns the first element of a `std::pair<>`.

A PolymorphicFunctionObject type that returns the first element of a `std::pair<>`.

`proto::callable`
This(Pair)
typename Pair::first_type
This(Pair &)
typename Pair::first_type &
This(Pair const &)
typename Pair::first_type const &
typename Pair::first_type & `Pair &`

`pair.first`

typename Pair::first_type const & `Pair const &`

`pair.first`

A PolymorphicFunctionObject type that returns the second element of a `std::pair<>`.

A PolymorphicFunctionObject type that returns the second element of a `std::pair<>`.

`proto::callable`
This(Pair)
typename Pair::second_type
This(Pair &)
typename Pair::second_type &
This(Pair const &)
typename Pair::second_type const &
typename Pair::second_type & `Pair &`

`pair.second`

typename Pair::second_type const & `Pair const &`

`pair.second`