proxygen
concept_def.h File Reference
#include <type_traits>

Go to the source code of this file.

Classes

struct  folly::pushmi::concepts::detail::And< T, U >
 
struct  folly::pushmi::concepts::detail::Or< T, U >
 
struct  folly::pushmi::concepts::detail::Not< T >
 
struct  folly::pushmi::concepts::detail::And< T, U >
 
struct  folly::pushmi::concepts::detail::Or< T, U >
 

Namespaces

 folly
 —— Concurrent Priority Queue Implementation ——
 
 folly::pushmi
 
 folly::pushmi::concepts
 
 folly::pushmi::concepts::detail
 
 folly::pushmi::isolated
 

Macros

#define __has_builtin(x)   0
 
#define PUSHMI_PP_IGNORE_CXX2A_COMPAT_BEGIN
 
#define PUSHMI_PP_IGNORE_CXX2A_COMPAT_END
 
#define PUSHMI_INLINE_VAR
 
#define PUSHMI_PP_IS_SAME(...)   std::is_same<__VA_ARGS__>::value
 
#define PUSHMI_PP_IS_CONSTRUCTIBLE(...)   std::is_constructible<__VA_ARGS__>::value
 
#define PUSHMI_COUNTER   __LINE__
 
#define PUSHMI_PP_CHECK(...)   PUSHMI_PP_CHECK_N(__VA_ARGS__, 0,)
 
#define PUSHMI_PP_CHECK_N(x, n, ...)   n
 
#define PUSHMI_PP_PROBE(x)   x, 1,
 
#define PUSHMI_CXX_VA_OPT   0
 
#define PUSHMI_PP_CAT_(X, ...)   X ## __VA_ARGS__
 
#define PUSHMI_PP_CAT(X, ...)   PUSHMI_PP_CAT_(X, __VA_ARGS__)
 
#define PUSHMI_PP_CAT2_(X, ...)   X ## __VA_ARGS__
 
#define PUSHMI_PP_CAT2(X, ...)   PUSHMI_PP_CAT2_(X, __VA_ARGS__)
 
#define PUSHMI_PP_EVAL(X, ...)   X(__VA_ARGS__)
 
#define PUSHMI_PP_EVAL2(X, ...)   X(__VA_ARGS__)
 
#define PUSHMI_PP_EXPAND(...)   __VA_ARGS__
 
#define PUSHMI_PP_EAT(...)
 
#define PUSHMI_PP_IS_PAREN(x)   PUSHMI_PP_CHECK(PUSHMI_PP_IS_PAREN_PROBE x)
 
#define PUSHMI_PP_IS_PAREN_PROBE(...)   PUSHMI_PP_PROBE(~)
 
#define PUSHMI_PP_COUNT(...)
 
#define PUSHMI_PP_COUNT_(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, N, ...)   N \
 
#define PUSHMI_PP_IIF(BIT)   PUSHMI_PP_CAT_(PUSHMI_PP_IIF_, BIT)
 
#define PUSHMI_PP_IIF_0(TRUE, ...)   __VA_ARGS__
 
#define PUSHMI_PP_IIF_1(TRUE, ...)   TRUE
 
#define PUSHMI_PP_EMPTY()
 
#define PUSHMI_PP_COMMA()   ,
 
#define PUSHMI_PP_COMMA_IIF(X)   PUSHMI_PP_IIF(X)(PUSHMI_PP_EMPTY, PUSHMI_PP_COMMA)()
 
#define PUSHMI_CONCEPT_ASSERT(...)
 
#define PUSHMI_CONCEPT_DEF(DECL, ...)
 
#define PUSHMI_PP_DECL_DEF_NAME(...)   PUSHMI_PP_CAT(PUSHMI_PP_DEF_, __VA_ARGS__), \
 
#define PUSHMI_PP_DECL_DEF(TPARAM, NAME, ...)
 
#define PUSHMI_PP_DECL_DEF_1(TPARAM, NAME, ...)
 
#define PUSHMI_PP_DECL_DEF_0(TPARAM, NAME, ...)
 
#define PUSHMI_PP_DEF_IMPL_0(...)   () -> std::enable_if_t<bool(__VA_ARGS__), int> \
 
#define PUSHMI_PP_DEF_IMPL_1(...)   PUSHMI_PP_CAT(PUSHMI_PP_DEF_IMPL_1_, __VA_ARGS__) ), int> \
 
#define PUSHMI_PP_DEF_IMPL_1_requires   PUSHMI_PP_DEF_IMPL_1_REQUIRES \
 
#define PUSHMI_PP_DEF_IMPL_1_REQUIRES(...)
 
#define PUSHMI_PP_DEF_REQUIRES_BODY(...)   <decltype(__VA_ARGS__, void())>() \
 
#define PUSHMI_PP_DECL_DEF_IMPL(TPARAM, NAME, ARGS, ...)
 
#define PUSHMI_PP_REQUIRES_PROBE_requires   PUSHMI_PP_PROBE(~) \
 
#define PUSHMI_PP_DEF_IMPL(REQUIRES, ...)
 
#define PUSHMI_PP_DEF_DECL_template(...)   template(__VA_ARGS__), \
 
#define PUSHMI_PP_DEF_template(...)   template<__VA_ARGS__> \
 
#define PUSHMI_PP_DEF_concept
 
#define PUSHMI_PP_DEF_class
 
#define PUSHMI_PP_DEF_typename
 
#define PUSHMI_PP_DEF_int
 
#define PUSHMI_PP_DEF_bool
 
#define PUSHMI_PP_DEF_size_t
 
#define PUSHMI_PP_DEF_unsigned
 
#define PUSHMI_PP_AUX_template(...)
 
#define PUSHMI_PP_TPARAM_1(_1)   PUSHMI_PP_CAT2(PUSHMI_PP_DEF_, _1)
 
#define PUSHMI_PP_TPARAM_2(_1, ...)   PUSHMI_PP_CAT2(PUSHMI_PP_DEF_, _1), PUSHMI_PP_TPARAM_1(__VA_ARGS__)
 
#define PUSHMI_PP_TPARAM_3(_1, ...)   PUSHMI_PP_CAT2(PUSHMI_PP_DEF_, _1), PUSHMI_PP_TPARAM_2(__VA_ARGS__)
 
#define PUSHMI_PP_TPARAM_4(_1, ...)   PUSHMI_PP_CAT2(PUSHMI_PP_DEF_, _1), PUSHMI_PP_TPARAM_3(__VA_ARGS__)
 
#define PUSHMI_PP_TPARAM_5(_1, ...)   PUSHMI_PP_CAT2(PUSHMI_PP_DEF_, _1), PUSHMI_PP_TPARAM_4(__VA_ARGS__)
 
#define PUSHMI_TEMPLATE(...)   template<__VA_ARGS__ PUSHMI_TEMPLATE_AUX_
 
#define PUSHMI_TEMPLATE_AUX_(...)
 
#define PUSHMI_TEMPLATE_AUX_3_requires
 
#define PUSHMI_TEMPLATE_AUX_4(...)   PUSHMI_TEMPLATE_AUX_5(__VA_ARGS__)(__VA_ARGS__) \
 
#define PUSHMI_TEMPLATE_AUX_5(REQUIRES, ...)
 
#define PUSHMI_TEMPLATE_AUX_5_0(...)   __VA_ARGS__ \
 
#define PUSHMI_TEMPLATE_AUX_5_1(...)   PUSHMI_PP_CAT(PUSHMI_TEMPLATE_AUX_6_, __VA_ARGS__) \
 
#define PUSHMI_TEMPLATE_AUX_6_requires(...)   ::folly::pushmi::concepts::detail::requires_<decltype(__VA_ARGS__)>() \
 
#define PUSHMI_BROKEN_SUBSUMPTION(...)   __VA_ARGS__
 
#define PUSHMI_TYPE_CONSTRAINT(...)   class
 
#define PUSHMI_EXP(...)   bool(::folly::pushmi::expAnd(__VA_ARGS__))
 
#define PUSHMI_AND   ,
 
#define PUSHMI_PP_CONSTRAINED_USING(REQUIRES, NAME, ...)   using NAME std::enable_if_t<bool(REQUIRES), __VA_ARGS__> \
 

Typedefs

template<bool B>
using folly::pushmi::bool_ = std::integral_constant< bool, B >
 

Functions

bool folly::pushmi::concepts::detail::gcc_bugs (...)
 
template<class >
constexpr bool folly::pushmi::concepts::detail::requires_ ()
 
template<class T0 >
constexpr auto folly::pushmi::isolated::expAnd (T0 &&t0)
 
template<class T0 , class... TN>
constexpr auto folly::pushmi::isolated::expAnd (T0 &&, TN &&...tn)
 
template<class... TN>
constexpr auto folly::pushmi::expAnd (TN &&...tn)
 
template<class T >
constexpr bool folly::pushmi::implicitly_convertible_to (T)
 

Variables

template<bool B>
constexpr std::enable_if_t< B, int > folly::pushmi::requires_ = 0
 

Macro Definition Documentation

#define __has_builtin (   x)    0

Definition at line 21 of file concept_def.h.

#define PUSHMI_CONCEPT_ASSERT (   ...)
Value:
static_assert((bool) (__VA_ARGS__), \
"Concept assertion failed : " #__VA_ARGS__)

Definition at line 137 of file concept_def.h.

#define PUSHMI_CONCEPT_DEF (   DECL,
  ... 
)
Value:
PUSHMI_PP_CAT(PUSHMI_PP_DEF_DECL_, DECL), \
__VA_ARGS__) \
#define PUSHMI_PP_EVAL(X,...)
Definition: concept_def.h:104
#define PUSHMI_PP_CAT(X,...)
Definition: concept_def.h:100
#define DECL(name,...)
#define PUSHMI_PP_DECL_DEF(TPARAM, NAME,...)
Definition: concept_def.h:165

Definition at line 156 of file concept_def.h.

#define PUSHMI_COUNTER   __LINE__

Definition at line 82 of file concept_def.h.

#define PUSHMI_CXX_VA_OPT   0

Definition at line 95 of file concept_def.h.

#define PUSHMI_INLINE_VAR

Definition at line 60 of file concept_def.h.

#define PUSHMI_PP_AUX_template (   ...)
Value:
PUSHMI_PP_TPARAM_, \
PUSHMI_PP_COUNT(__VA_ARGS__))(__VA_ARGS__) \
#define PUSHMI_PP_COUNT(...)
Definition: concept_def.h:113
#define PUSHMI_PP_CAT2(X,...)
Definition: concept_def.h:102

Definition at line 327 of file concept_def.h.

#define PUSHMI_PP_CAT (   X,
  ... 
)    PUSHMI_PP_CAT_(X, __VA_ARGS__)

Definition at line 100 of file concept_def.h.

#define PUSHMI_PP_CAT2 (   X,
  ... 
)    PUSHMI_PP_CAT2_(X, __VA_ARGS__)

Definition at line 102 of file concept_def.h.

#define PUSHMI_PP_CAT2_ (   X,
  ... 
)    X ## __VA_ARGS__

Definition at line 101 of file concept_def.h.

#define PUSHMI_PP_CAT_ (   X,
  ... 
)    X ## __VA_ARGS__

Definition at line 99 of file concept_def.h.

#define PUSHMI_PP_CHECK (   ...)    PUSHMI_PP_CHECK_N(__VA_ARGS__, 0,)

Definition at line 85 of file concept_def.h.

#define PUSHMI_PP_CHECK_N (   x,
  n,
  ... 
)    n

Definition at line 86 of file concept_def.h.

#define PUSHMI_PP_COMMA ( )    ,

Definition at line 133 of file concept_def.h.

#define PUSHMI_PP_COMMA_IIF (   X)    PUSHMI_PP_IIF(X)(PUSHMI_PP_EMPTY, PUSHMI_PP_COMMA)()

Definition at line 134 of file concept_def.h.

#define PUSHMI_PP_CONSTRAINED_USING (   REQUIRES,
  NAME,
  ... 
)    using NAME std::enable_if_t<bool(REQUIRES), __VA_ARGS__> \

Definition at line 434 of file concept_def.h.

#define PUSHMI_PP_COUNT (   ...)
Value:
PUSHMI_PP_COUNT_(__VA_ARGS__, \
50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31, \
30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11, \
10,9,8,7,6,5,4,3,2,1,) \
#define PUSHMI_PP_COUNT_(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10,_11, _12, _13, _14, _15, _16, _17, _18, _19, _20,_21, _22, _23, _24, _25, _26, _27, _28, _29, _30,_31, _32, _33, _34, _35, _36, _37, _38, _39, _40,_41, _42, _43, _44, _45, _46, _47, _48, _49, _50, N,...)
Definition: concept_def.h:119

Definition at line 113 of file concept_def.h.

#define PUSHMI_PP_COUNT_ (   _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  _10,
  _11,
  _12,
  _13,
  _14,
  _15,
  _16,
  _17,
  _18,
  _19,
  _20,
  _21,
  _22,
  _23,
  _24,
  _25,
  _26,
  _27,
  _28,
  _29,
  _30,
  _31,
  _32,
  _33,
  _34,
  _35,
  _36,
  _37,
  _38,
  _39,
  _40,
  _41,
  _42,
  _43,
  _44,
  _45,
  _46,
  _47,
  _48,
  _49,
  _50,
  N,
  ... 
)    N \

Definition at line 119 of file concept_def.h.

#define PUSHMI_PP_DECL_DEF (   TPARAM,
  NAME,
  ... 
)
Value:
PUSHMI_PP_CAT(PUSHMI_PP_DECL_DEF_, PUSHMI_PP_IS_PAREN(NAME))( \
TPARAM, \
__VA_ARGS__) \
#define PUSHMI_PP_CAT(X,...)
Definition: concept_def.h:100
#define PUSHMI_PP_IS_PAREN(x)
Definition: concept_def.h:110
string NAME
Definition: tokenize.py:56

Definition at line 165 of file concept_def.h.

#define PUSHMI_PP_DECL_DEF_0 (   TPARAM,
  NAME,
  ... 
)
Value:
TPARAM, \
PUSHMI_PP_CAT(PUSHMI_PP_DEF_, NAME), \
(PUSHMI_PP_CAT(PUSHMI_PP_AUX_, TPARAM)), \
__VA_ARGS__) \
#define PUSHMI_PP_CAT(X,...)
Definition: concept_def.h:100
#define PUSHMI_PP_DECL_DEF_IMPL(TPARAM, NAME, ARGS,...)
Definition: concept_def.h:252
string NAME
Definition: tokenize.py:56

Definition at line 187 of file concept_def.h.

#define PUSHMI_PP_DECL_DEF_1 (   TPARAM,
  NAME,
  ... 
)
Value:
TPARAM, \
__VA_ARGS__) \
#define PUSHMI_PP_DECL_DEF_NAME(...)
Definition: concept_def.h:162
#define PUSHMI_PP_EVAL2(X,...)
Definition: concept_def.h:105
#define PUSHMI_PP_DECL_DEF_IMPL(TPARAM, NAME, ARGS,...)
Definition: concept_def.h:252
string NAME
Definition: tokenize.py:56

Definition at line 175 of file concept_def.h.

#define PUSHMI_PP_DECL_DEF_IMPL (   TPARAM,
  NAME,
  ARGS,
  ... 
)

Definition at line 252 of file concept_def.h.

#define PUSHMI_PP_DECL_DEF_NAME (   ...)    PUSHMI_PP_CAT(PUSHMI_PP_DEF_, __VA_ARGS__), \

Definition at line 162 of file concept_def.h.

#define PUSHMI_PP_DEF_bool

Definition at line 324 of file concept_def.h.

#define PUSHMI_PP_DEF_class

Definition at line 321 of file concept_def.h.

#define PUSHMI_PP_DEF_concept

Definition at line 320 of file concept_def.h.

#define PUSHMI_PP_DEF_DECL_template (   ...)    template(__VA_ARGS__), \

Definition at line 314 of file concept_def.h.

#define PUSHMI_PP_DEF_IMPL (   REQUIRES,
  ... 
)
Value:
PUSHMI_PP_DEF_IMPL_, \
PUSHMI_PP_CHECK(PUSHMI_PP_CAT(PUSHMI_PP_REQUIRES_PROBE_, REQUIRES))) \
#define PUSHMI_PP_CAT(X,...)
Definition: concept_def.h:100
#define PUSHMI_PP_CHECK(...)
Definition: concept_def.h:85

Definition at line 309 of file concept_def.h.

#define PUSHMI_PP_DEF_IMPL_0 (   ...)    () -> std::enable_if_t<bool(__VA_ARGS__), int> \

Definition at line 234 of file concept_def.h.

#define PUSHMI_PP_DEF_IMPL_1 (   ...)    PUSHMI_PP_CAT(PUSHMI_PP_DEF_IMPL_1_, __VA_ARGS__) ), int> \

Definition at line 238 of file concept_def.h.

#define PUSHMI_PP_DEF_IMPL_1_requires   PUSHMI_PP_DEF_IMPL_1_REQUIRES \

Definition at line 241 of file concept_def.h.

#define PUSHMI_PP_DEF_IMPL_1_REQUIRES (   ...)
Value:
(__VA_ARGS__) -> std::enable_if_t<bool( \
#define PUSHMI_PP_DEF_REQUIRES_BODY(...)
Definition: concept_def.h:249

Definition at line 244 of file concept_def.h.

#define PUSHMI_PP_DEF_int

Definition at line 323 of file concept_def.h.

#define PUSHMI_PP_DEF_REQUIRES_BODY (   ...)    <decltype(__VA_ARGS__, void())>() \

Definition at line 249 of file concept_def.h.

#define PUSHMI_PP_DEF_size_t

Definition at line 325 of file concept_def.h.

#define PUSHMI_PP_DEF_template (   ...)    template<__VA_ARGS__> \

Definition at line 317 of file concept_def.h.

#define PUSHMI_PP_DEF_typename

Definition at line 322 of file concept_def.h.

#define PUSHMI_PP_DEF_unsigned

Definition at line 326 of file concept_def.h.

#define PUSHMI_PP_EAT (   ...)

Definition at line 108 of file concept_def.h.

#define PUSHMI_PP_EMPTY ( )

Definition at line 132 of file concept_def.h.

#define PUSHMI_PP_EVAL (   X,
  ... 
)    X(__VA_ARGS__)

Definition at line 104 of file concept_def.h.

#define PUSHMI_PP_EVAL2 (   X,
  ... 
)    X(__VA_ARGS__)

Definition at line 105 of file concept_def.h.

#define PUSHMI_PP_EXPAND (   ...)    __VA_ARGS__

Definition at line 107 of file concept_def.h.

#define PUSHMI_PP_IGNORE_CXX2A_COMPAT_BEGIN

Definition at line 47 of file concept_def.h.

#define PUSHMI_PP_IGNORE_CXX2A_COMPAT_END

Definition at line 48 of file concept_def.h.

#define PUSHMI_PP_IIF (   BIT)    PUSHMI_PP_CAT_(PUSHMI_PP_IIF_, BIT)

Definition at line 128 of file concept_def.h.

#define PUSHMI_PP_IIF_0 (   TRUE,
  ... 
)    __VA_ARGS__

Definition at line 129 of file concept_def.h.

#define PUSHMI_PP_IIF_1 (   TRUE,
  ... 
)    TRUE

Definition at line 130 of file concept_def.h.

#define PUSHMI_PP_IS_CONSTRUCTIBLE (   ...)    std::is_constructible<__VA_ARGS__>::value

Definition at line 76 of file concept_def.h.

#define PUSHMI_PP_IS_PAREN (   x)    PUSHMI_PP_CHECK(PUSHMI_PP_IS_PAREN_PROBE x)

Definition at line 110 of file concept_def.h.

#define PUSHMI_PP_IS_PAREN_PROBE (   ...)    PUSHMI_PP_PROBE(~)

Definition at line 111 of file concept_def.h.

#define PUSHMI_PP_IS_SAME (   ...)    std::is_same<__VA_ARGS__>::value

Definition at line 68 of file concept_def.h.

#define PUSHMI_PP_PROBE (   x)    x, 1,

Definition at line 87 of file concept_def.h.

#define PUSHMI_PP_REQUIRES_PROBE_requires   PUSHMI_PP_PROBE(~) \

Definition at line 306 of file concept_def.h.

#define PUSHMI_PP_TPARAM_1 (   _1)    PUSHMI_PP_CAT2(PUSHMI_PP_DEF_, _1)

Definition at line 332 of file concept_def.h.

#define PUSHMI_PP_TPARAM_2 (   _1,
  ... 
)    PUSHMI_PP_CAT2(PUSHMI_PP_DEF_, _1), PUSHMI_PP_TPARAM_1(__VA_ARGS__)

Definition at line 334 of file concept_def.h.

#define PUSHMI_PP_TPARAM_3 (   _1,
  ... 
)    PUSHMI_PP_CAT2(PUSHMI_PP_DEF_, _1), PUSHMI_PP_TPARAM_2(__VA_ARGS__)

Definition at line 336 of file concept_def.h.

#define PUSHMI_PP_TPARAM_4 (   _1,
  ... 
)    PUSHMI_PP_CAT2(PUSHMI_PP_DEF_, _1), PUSHMI_PP_TPARAM_3(__VA_ARGS__)

Definition at line 338 of file concept_def.h.

#define PUSHMI_PP_TPARAM_5 (   _1,
  ... 
)    PUSHMI_PP_CAT2(PUSHMI_PP_DEF_, _1), PUSHMI_PP_TPARAM_4(__VA_ARGS__)

Definition at line 340 of file concept_def.h.

#define PUSHMI_TEMPLATE (   ...)    template<__VA_ARGS__ PUSHMI_TEMPLATE_AUX_

Definition at line 382 of file concept_def.h.

#define PUSHMI_TEMPLATE_AUX_ (   ...)
Value:
, \
int (*PUSHMI_PP_CAT(_pushmi_concept_unique_, __LINE__))[ \
PUSHMI_COUNTER] = nullptr, \
std::enable_if_t<PUSHMI_PP_CAT(_pushmi_concept_unique_, __LINE__) || \
PUSHMI_TEMPLATE_AUX_3_, __VA_ARGS__))), int> = 0> \
#define PUSHMI_COUNTER
Definition: concept_def.h:82
#define PUSHMI_PP_CAT(X,...)
Definition: concept_def.h:100
#define PUSHMI_TEMPLATE_AUX_4(...)
Definition: concept_def.h:392

Definition at line 384 of file concept_def.h.

#define PUSHMI_TEMPLATE_AUX_3_requires

Definition at line 391 of file concept_def.h.

#define PUSHMI_TEMPLATE_AUX_4 (   ...)    PUSHMI_TEMPLATE_AUX_5(__VA_ARGS__)(__VA_ARGS__) \

Definition at line 392 of file concept_def.h.

#define PUSHMI_TEMPLATE_AUX_5 (   REQUIRES,
  ... 
)
Value:
PUSHMI_TEMPLATE_AUX_5_, \
PUSHMI_PP_CHECK(PUSHMI_PP_CAT(PUSHMI_PP_REQUIRES_PROBE_, REQUIRES))) \
#define PUSHMI_PP_CAT(X,...)
Definition: concept_def.h:100
#define PUSHMI_PP_CHECK(...)
Definition: concept_def.h:85

Definition at line 395 of file concept_def.h.

#define PUSHMI_TEMPLATE_AUX_5_0 (   ...)    __VA_ARGS__ \

Definition at line 401 of file concept_def.h.

#define PUSHMI_TEMPLATE_AUX_5_1 (   ...)    PUSHMI_PP_CAT(PUSHMI_TEMPLATE_AUX_6_, __VA_ARGS__) \

Definition at line 404 of file concept_def.h.

#define PUSHMI_TEMPLATE_AUX_6_requires (   ...)    ::folly::pushmi::concepts::detail::requires_<decltype(__VA_ARGS__)>() \

Definition at line 407 of file concept_def.h.