MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
integer_sequence.hpp
浏览该文件的文档.
1#ifndef MSTL_CORE_UTILITY_INTEGER_SEQUENCE_HPP__
2#define MSTL_CORE_UTILITY_INTEGER_SEQUENCE_HPP__
3
11
14
20
31template <typename T, T... Values>
33 static_assert(is_integral<T>::value, "integer sequence requires integral types.");
34
35 using value_type = T;
36
41 MSTL_NODISCARD static constexpr size_t size() noexcept {
42 return sizeof...(Values);
43 }
44};
45
54template <typename T, T Size>
56#if defined(MSTL_COMPILER_MSVC__) || defined(MSTL_COMPILER_CLANG__)
57 __make_integer_seq<integer_sequence, T, Size>;
58#else
59 integer_sequence<T, __integer_pack(Size)...>;
60#endif
61
69template <size_t... Values>
71
79template <size_t Size>
81
89template <typename... Types>
90using index_sequence_for = make_index_sequence<sizeof...(Types)>;
91 // IntegerSequence
93
99
107template <size_t... Values>
108struct index_tuple {};
109
117template <size_t Num>
119private:
120 template <size_t... Is>
121 static index_tuple<Is...> convert(index_sequence<Is...>);
122
123public:
127 using type = decltype(build_index_tuple::convert(make_index_sequence<Num>{}));
128};
129
134template <size_t Num>
136 // IndexTuple
138
140#endif // MSTL_CORE_UTILITY_INTEGER_SEQUENCE_HPP__
typename build_index_tuple< Num >::type build_index_tuple_t
build_index_tuple的便捷别名
integer_sequence< T, __integer_pack(Size)... > make_integer_sequence
生成指定长度的整数序列
integer_sequence< size_t, Values... > index_sequence
索引序列
make_index_sequence< sizeof...(Types)> index_sequence_for
根据类型参数包生成索引序列
make_integer_sequence< size_t, Size > make_index_sequence
生成指定长度的索引序列
#define MSTL_END_NAMESPACE__
结束全局命名空间MSTL
#define MSTL_BEGIN_NAMESPACE__
开始全局命名空间MSTL
uint64_t size_t
无符号大小类型
构建指定长度的索引元组
decltype(build_index_tuple::convert(make_index_sequence< Num >{})) type
生成的索引元组类型
索引元组容器
编译时整数序列容器
static MSTL_NODISCARD constexpr size_t size() noexcept
T value_type
序列中整数的类型
MSTL类型萃取