mirror of
https://github.com/boostorg/lambda2.git
synced 2025-05-10 01:33:53 +00:00
Add operator() to placeholders
This commit is contained in:
parent
bfc742d854
commit
07c965a088
@ -8,6 +8,8 @@
|
||||
#include <functional>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
#include <tuple>
|
||||
#include <cstddef>
|
||||
|
||||
// Same format as BOOST_VERSION:
|
||||
// major * 100000 + minor * 100 + patch
|
||||
@ -22,6 +24,10 @@ namespace lambda2
|
||||
|
||||
template<int I> struct lambda2_arg
|
||||
{
|
||||
template<class... A> decltype(auto) operator()( A&&... a ) const noexcept
|
||||
{
|
||||
return std::get<std::size_t{I-1}>( std::tuple<A&&...>( std::forward<A>(a)... ) );
|
||||
}
|
||||
};
|
||||
|
||||
#if defined(__cpp_inline_variables) && __cpp_inline_variables >= 201606L
|
||||
|
@ -25,5 +25,24 @@ int main()
|
||||
BOOST_TEST_EQ( std::bind(f, _8)( 1, 2, 3, 4, 5, 6, 7, 8 ), 8 );
|
||||
BOOST_TEST_EQ( std::bind(f, _9)( 1, 2, 3, 4, 5, 6, 7, 8, 9 ), 9 );
|
||||
|
||||
BOOST_TEST_EQ( _1( 1 ), 1 );
|
||||
BOOST_TEST_EQ( _2( 1, 2 ), 2 );
|
||||
BOOST_TEST_EQ( _3( 1, 2, 3 ), 3 );
|
||||
BOOST_TEST_EQ( _4( 1, 2, 3, 4 ), 4 );
|
||||
BOOST_TEST_EQ( _5( 1, 2, 3, 4, 5 ), 5 );
|
||||
BOOST_TEST_EQ( _6( 1, 2, 3, 4, 5, 6 ), 6 );
|
||||
BOOST_TEST_EQ( _7( 1, 2, 3, 4, 5, 6, 7 ), 7 );
|
||||
BOOST_TEST_EQ( _8( 1, 2, 3, 4, 5, 6, 7, 8 ), 8 );
|
||||
BOOST_TEST_EQ( _9( 1, 2, 3, 4, 5, 6, 7, 8, 9 ), 9 );
|
||||
|
||||
BOOST_TEST_EQ( _1( 1, 2, 3, 4, 5, 6, 7, 8, 9 ), 1 );
|
||||
BOOST_TEST_EQ( _2( 1, 2, 3, 4, 5, 6, 7, 8, 9 ), 2 );
|
||||
BOOST_TEST_EQ( _3( 1, 2, 3, 4, 5, 6, 7, 8, 9 ), 3 );
|
||||
BOOST_TEST_EQ( _4( 1, 2, 3, 4, 5, 6, 7, 8, 9 ), 4 );
|
||||
BOOST_TEST_EQ( _5( 1, 2, 3, 4, 5, 6, 7, 8, 9 ), 5 );
|
||||
BOOST_TEST_EQ( _6( 1, 2, 3, 4, 5, 6, 7, 8, 9 ), 6 );
|
||||
BOOST_TEST_EQ( _7( 1, 2, 3, 4, 5, 6, 7, 8, 9 ), 7 );
|
||||
BOOST_TEST_EQ( _8( 1, 2, 3, 4, 5, 6, 7, 8, 9 ), 8 );
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user