mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-16 15:14:13 +00:00
add _ placeholder User-defined literals
This commit is contained in:
parent
50f2ba6e31
commit
2f86a59273
7 changed files with 188 additions and 116 deletions
|
@ -15,10 +15,14 @@
|
|||
#include <sprout/functional/ref.hpp>
|
||||
#include <sprout/functional/mem_fn.hpp>
|
||||
#include <sprout/functional/type_traits/weak_result_type.hpp>
|
||||
#include <sprout/functional/bind/placeholder.hpp>
|
||||
|
||||
namespace sprout {
|
||||
// 20.8.9 bind
|
||||
|
||||
//
|
||||
// is_bind_expression
|
||||
//
|
||||
template<typename T>
|
||||
struct is_bind_expression
|
||||
: public std::false_type
|
||||
|
@ -36,99 +40,6 @@ namespace sprout {
|
|||
: public sprout::is_bind_expression<T>
|
||||
{};
|
||||
|
||||
template<typename T>
|
||||
struct is_placeholder
|
||||
: public std::integral_constant<int, 0>
|
||||
{};
|
||||
template<typename T>
|
||||
struct is_placeholder<T const>
|
||||
: public sprout::is_placeholder<T>
|
||||
{};
|
||||
template<typename T>
|
||||
struct is_placeholder<T volatile>
|
||||
: public sprout::is_placeholder<T>
|
||||
{};
|
||||
template<typename T>
|
||||
struct is_placeholder<T const volatile>
|
||||
: public sprout::is_placeholder<T>
|
||||
{};
|
||||
|
||||
//
|
||||
// placeholder
|
||||
//
|
||||
template<int N>
|
||||
struct placeholder {};
|
||||
|
||||
namespace placeholders {
|
||||
namespace {
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<1> _1 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<2> _2 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<3> _3 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<4> _4 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<5> _5 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<6> _6 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<7> _7 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<8> _8 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<9> _9 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<10> _10 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<11> _11 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<12> _12 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<13> _13 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<14> _14 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<15> _15 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<16> _16 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<17> _17 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<18> _18 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<19> _19 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<20> _20 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<21> _21 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<22> _22 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<23> _23 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<24> _24 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<25> _25 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<26> _26 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<27> _27 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<28> _28 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<29> _29 = {};
|
||||
SPROUT_STATIC_CONSTEXPR sprout::placeholder<30> _30 = {};
|
||||
} // anonymous-namespace
|
||||
} // namespace placeholders
|
||||
using sprout::placeholders::_1;
|
||||
using sprout::placeholders::_2;
|
||||
using sprout::placeholders::_3;
|
||||
using sprout::placeholders::_4;
|
||||
using sprout::placeholders::_5;
|
||||
using sprout::placeholders::_6;
|
||||
using sprout::placeholders::_7;
|
||||
using sprout::placeholders::_8;
|
||||
using sprout::placeholders::_9;
|
||||
using sprout::placeholders::_10;
|
||||
using sprout::placeholders::_11;
|
||||
using sprout::placeholders::_12;
|
||||
using sprout::placeholders::_13;
|
||||
using sprout::placeholders::_14;
|
||||
using sprout::placeholders::_15;
|
||||
using sprout::placeholders::_16;
|
||||
using sprout::placeholders::_17;
|
||||
using sprout::placeholders::_18;
|
||||
using sprout::placeholders::_19;
|
||||
using sprout::placeholders::_20;
|
||||
using sprout::placeholders::_21;
|
||||
using sprout::placeholders::_2;
|
||||
using sprout::placeholders::_23;
|
||||
using sprout::placeholders::_24;
|
||||
using sprout::placeholders::_25;
|
||||
using sprout::placeholders::_26;
|
||||
using sprout::placeholders::_27;
|
||||
using sprout::placeholders::_28;
|
||||
using sprout::placeholders::_29;
|
||||
using sprout::placeholders::_30;
|
||||
|
||||
template<int N>
|
||||
struct is_placeholder<sprout::placeholder<N> >
|
||||
: public std::integral_constant<int, N>
|
||||
{};
|
||||
|
||||
namespace detail {
|
||||
struct no_tuple_element;
|
||||
|
||||
|
@ -509,6 +420,9 @@ namespace sprout {
|
|||
}
|
||||
};
|
||||
|
||||
//
|
||||
// is_bind_expression
|
||||
//
|
||||
template<typename Signature>
|
||||
struct is_bind_expression<sprout::binder<Signature> >
|
||||
: public std::true_type
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue