diff --git a/include/boost/lambda2/lambda2.hpp b/include/boost/lambda2/lambda2.hpp index f43197d..43a76fc 100644 --- a/include/boost/lambda2/lambda2.hpp +++ b/include/boost/lambda2/lambda2.hpp @@ -32,6 +32,14 @@ struct subscript } }; +template struct get +{ + template decltype(auto) operator()( T&& t ) const + { + return std::get( std::forward(t) ); + } +}; + } // namespace lambda2_detail // placeholders @@ -65,6 +73,11 @@ BOOST_LAMBDA2_INLINE_VAR constexpr lambda2_arg<7> _7{}; BOOST_LAMBDA2_INLINE_VAR constexpr lambda2_arg<8> _8{}; BOOST_LAMBDA2_INLINE_VAR constexpr lambda2_arg<9> _9{}; +// first, second + +BOOST_LAMBDA2_INLINE_VAR constexpr lambda2_detail::get<0> first{}; +BOOST_LAMBDA2_INLINE_VAR constexpr lambda2_detail::get<1> second{}; + #undef BOOST_LAMBDA2_INLINE_VAR } // namespace lambda2 diff --git a/test/project.cpp b/test/project.cpp index c587f07..45b2073 100644 --- a/test/project.cpp +++ b/test/project.cpp @@ -63,6 +63,9 @@ int main() BOOST_TEST_EQ( (_1->*&std::pair::first)( x ), 1 ); BOOST_TEST_EQ( (_1->*&std::pair::second)( x ), 2 ); + + BOOST_TEST_EQ( (_1->*first)( x ), 1 ); + BOOST_TEST_EQ( (_1->*second)( x ), 2 ); } return boost::report_errors();