8#ifndef INCLUDED_BSLMF_MAKEINTEGERSEQUENCE
9#define INCLUDED_BSLMF_MAKEINTEGERSEQUENCE
165#include <bslscm_version.h>
174#ifdef BSLS_LIBRARYFEATURES_HAS_CPP14_INTEGER_SEQUENCE
186template <
class t_S1,
class t_S2>
187struct MakeIntegerSequence_ConcatUtil;
192template <
class t_T, t_T... t_I1, t_T... t_I2>
193struct MakeIntegerSequence_ConcatUtil<
bslmf::IntegerSequence<t_T, t_I1...>,
194 bslmf::IntegerSequence<t_T, t_I2...> >
203 bslmf::IntegerSequence<t_T, t_I1..., (
sizeof...(t_I1) + t_I2)...>;
208template <
class t_S1,
class t_S2>
209using MakeIntegerSequence_ConcatUtil_t =
210 typename MakeIntegerSequence_ConcatUtil<t_S1, t_S2>::type;
219template <
class t_T,
class t_N>
220struct MakeIntegerSequence_Impl
231 using type = MakeIntegerSequence_ConcatUtil_t<
232 typename MakeIntegerSequence_Impl<t_T, FirstPart>::type,
233 typename MakeIntegerSequence_Impl<t_T, SecondPart>::type>;
240struct MakeIntegerSequence_Impl<t_T,
bsl::integral_constant<std::size_t, 0> >
242 using type = bslmf::IntegerSequence<t_T>;
249struct MakeIntegerSequence_Impl<t_T,
bsl::integral_constant<std::size_t, 1> >
251 using type = bslmf::IntegerSequence<t_T, 0>;
258struct MakeIntegerSequence_Impl<t_T,
bsl::integral_constant<std::size_t, 2> >
260 using type = bslmf::IntegerSequence<t_T, 0, 1>;
267struct MakeIntegerSequence_Impl<t_T,
bsl::integral_constant<std::size_t, 3> >
269 using type = bslmf::IntegerSequence<t_T, 0, 1, 2>;
276struct MakeIntegerSequence_Impl<t_T,
bsl::integral_constant<std::size_t, 4> >
278 using type = bslmf::IntegerSequence<t_T, 0, 1, 2, 3>;
285struct MakeIntegerSequence_Impl<t_T,
bsl::integral_constant<std::size_t, 5> >
287 using type = bslmf::IntegerSequence<t_T, 0, 1, 2, 3, 4>;
294struct MakeIntegerSequence_Impl<t_T,
bsl::integral_constant<std::size_t, 6> >
296 using type = bslmf::IntegerSequence<t_T, 0, 1, 2, 3, 4, 5>;
303struct MakeIntegerSequence_Impl<t_T,
bsl::integral_constant<std::size_t, 7> >
305 using type = bslmf::IntegerSequence<t_T, 0, 1, 2, 3, 4, 5, 6>;
312struct MakeIntegerSequence_Impl<t_T,
bsl::integral_constant<std::size_t, 8> >
314 using type = bslmf::IntegerSequence<t_T, 0, 1, 2, 3, 4, 5, 6, 7>;
321template <
class t_T,
class t_N>
322using MakeIntegerSequence_Impl_t =
323 typename MakeIntegerSequence_Impl<t_T, t_N>::type;
329template <
class t_T, t_T t_N>
330using MakeIntegerSequence = BloombergLP::bslmf::
331 MakeIntegerSequence_Impl_t<t_T, bsl::integral_constant<std::size_t, t_N> >;
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
Definition bdlb_printmethods.h:283
Definition bdlbb_blob.h:576
Definition bslmf_integralconstant.h:244