28 #ifndef YB_INC_ystdex_tuple_hpp_
29 #define YB_INC_ystdex_tuple_hpp_ 1
43 template<
size_t _vIdx,
typename _type>
52 template<
class,
class,
class>
55 template<
class _type1,
class _type2>
60 template<
typename... _types1,
typename... _types2,
size_t... _vSeq,
65 static_assert(
sizeof...(_types1) ==
sizeof...(_types2),
66 "Mismatched sizes of tuple found.");
69 using t1 = std::tuple<_types1...>;
70 using t2 = std::tuple<_types2...>;
82 template<
typename... _tFroms,
typename... _tTos>
84 : integral_constant<bool, details::tuple_element_convertible<
85 std::tuple<_tFroms...>, std::tuple<_tTos...>,
86 make_natural_sequence_t<sizeof...(_tTos)>>::value>
90 template<
typename... _tFroms,
typename... _tTos>
92 : integral_constant<bool, details::tuple_element_convertible<
93 std::tuple<_tTos...>, std::tuple<_tFroms...>,
94 make_natural_sequence_t<sizeof...(_tTos)>>::value>
98 template<
typename... _types1,
typename... _types2>
99 struct sequence_cat<std::tuple<_types1...>, std::tuple<_types2...>>
101 using type = std::tuple<_types1..., _types2...>;
105 template<
size_t _vIdx,
typename... _types>
107 : std::tuple_element<_vIdx, std::tuple<_types...>>
111 template<
typename... _types,
size_t... _vIdxSeq>
119 template<
typename... _types>
133 template<
typename _tHead,
typename... _tTail>
137 using tail = std::tuple<_tTail...>;
typename sequence_project< _tSeq, _tIdxSeq >::type sequence_project_t
typename std::tuple_element< _vIdx, _type >::type tuple_element_t
std::tuple< _types1...> t1
sequence_project_t< tuple_type, sequence_reverse_t< make_natural_sequence_t< std::tuple_size< tuple_type >::value >>> type
typename sequence_reverse< _tSeq >::type sequence_reverse_t
std::tuple< _tTail...> tail
std::tuple< _types1..., _types2...> type
std::tuple< _types...> tuple_type
std::tuple< _types2...> t2
typename sequence_element< _vIdx, _tSeq >::type sequence_element_t
std::tuple< tuple_element_t< _vIdxSeq, std::tuple< _types...>>...> type
#define yconstexpr
指定编译时常量表达式。
typename make_natural_sequence< _vN >::type make_natural_sequence_t