NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
integer_sequence.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_UTILITY_INTEGER_SEQUENCE_HPP__
2#define NEFORCE_CORE_UTILITY_INTEGER_SEQUENCE_HPP__
3
11
13NEFORCE_BEGIN_NAMESPACE__
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 NEFORCE_NODISCARD static constexpr size_t size() noexcept { return sizeof...(Values); }
42};
43
52template <typename T, T Size>
54#if defined(NEFORCE_COMPILER_MSVC) || defined(NEFORCE_COMPILER_CLANG)
55 __make_integer_seq<integer_sequence, T, Size>;
56#else
57 integer_sequence<T, __integer_pack(Size)...>;
58#endif
59
67template <size_t... Values>
69
77template <size_t Size>
79
87template <typename... Types>
88using index_sequence_for = make_index_sequence<sizeof...(Types)>;
89 // IntegerSequence
91
97
105template <size_t... Values>
106struct index_tuple {};
107
115template <size_t Num>
117private:
118 template <size_t... Is>
119 static index_tuple<Is...> convert(index_sequence<Is...>);
120
121public:
125 using type = decltype(build_index_tuple::convert(make_index_sequence<Num>{}));
126};
127
132template <size_t Num>
134 // IndexTuple
136
137NEFORCE_END_NAMESPACE__
138#endif // NEFORCE_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
生成指定长度的索引序列
uint64_t size_t
无符号大小类型
构建指定长度的索引元组
decltype(build_index_tuple::convert(make_index_sequence< Num >{})) type
生成的索引元组类型
索引元组容器
编译时整数序列容器
T value_type
序列中整数的类型
static NEFORCE_NODISCARD constexpr size_t size() noexcept
类型萃取