18# define PYBIND11_DESCR_CONSTEXPR static constexpr
20# define PYBIND11_DESCR_CONSTEXPR const
24template <
size_t N,
typename... Ts>
32 template <
size_t... Is>
35 template <
typename... Chars>
37 constexpr descr(
char c, Chars... cs) :
text{c, static_cast<char>(cs)...,
'\0'} {}
39 static constexpr std::array<
const std::type_info *,
sizeof...(Ts) + 1>
types() {
40 return {{&
typeid(Ts)...,
nullptr}};
44template <
size_t N1,
size_t N2,
typename... Ts1,
typename... Ts2,
size_t... Is1,
size_t... Is2>
50 return {a.
text[Is1]..., b.
text[Is2]...};
53template <
size_t N1,
size_t N2,
typename... Ts1,
typename... Ts2>
61 return descr<N - 1>(text);
65template <
size_t Rem,
size_t... Digits>
67template <
size_t... Digits>
70 static constexpr auto digits =
descr<
sizeof...(Digits)>((
'0' + Digits)...);
74template <
bool B,
size_t N1,
size_t N2>
78template <
bool B,
size_t N1,
size_t N2>
83template <
bool B,
typename T1,
typename T2>
87template <
bool B,
typename T1,
typename T2>
94 return int_to_str<Size / 10, Size % 10>::digits;
97template <
typename Type>
107# define PYBIND11_DETAIL_UNDERSCORE_BACKWARD_COMPATIBILITY
109constexpr descr<N - 1>
_(
char const (&text)[N]) {
110 return const_name<N>(text);
112template <
bool B,
size_t N1,
size_t N2>
114 return const_name<B, N1, N2>(text1, text2);
116template <
bool B,
size_t N1,
size_t N2>
118 return const_name<B, N1, N2>(text1, text2);
120template <
bool B,
typename T1,
typename T2>
122 return const_name<B, T1, T2>(d1, d2);
124template <
bool B,
typename T1,
typename T2>
126 return const_name<B, T1, T2>(d1, d2);
129template <
size_t Size>
131 return const_name<Size>();
133template <
typename Type>
135 return const_name<Type>();
141template <
size_t N,
typename... Ts>
146template <
size_t N,
typename... Ts,
typename... Args>
152template <
size_t N,
typename... Ts>
typename std::enable_if< B, T >::type enable_if_t
from cpp_future import (convenient aliases from C++14/17)
typename std::remove_cv< T >::type remove_cv_t
#define PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(...)
#define PYBIND11_NAMESPACE_END(name)
#define PYBIND11_NAMESPACE_BEGIN(name)
typename make_index_sequence_impl< N >::type make_index_sequence
auto constexpr const_name() -> remove_cv_t< decltype(int_to_str< Size/10, Size % 10 >::digits)>
constexpr descr< N1+N2, Ts1..., Ts2... > plus_impl(const descr< N1, Ts1... > &a, const descr< N2, Ts2... > &b, index_sequence< Is1... >, index_sequence< Is2... >)
constexpr descr< N1+N2, Ts1..., Ts2... > operator+(const descr< N1, Ts1... > &a, const descr< N2, Ts2... > &b)
constexpr descr< N+2, Ts... > type_descr(const descr< N, Ts... > &descr)
auto constexpr _() -> remove_cv_t< decltype(int_to_str< Size/10, Size % 10 >::digits)>
constexpr descr< 0 > concat()
constexpr descr(char const (&s)[N+1], index_sequence< Is... >)
static constexpr std::array< const std::type_info *, sizeof...(Ts)+1 > types()
constexpr descr()=default
constexpr descr(char const (&s)[N+1])
constexpr descr(char c, Chars... cs)