20
General utilities library
[utilities]
20.3
Compile-time integer sequences
[intseq]
20.3.1
In general
[intseq.general]
1
#
The library provides a class template that can represent an integer sequence
.
When used as an argument to a function template the template parameter pack defining the sequence can be deduced and used in a pack expansion
.
[
Note
1
:
The
index_sequence
alias template is provided for the common case of an integer sequence of type
size_t
; see also
[tuple.
apply]
.
—
end note
]
20.3.2
Class template
integer_sequence
[intseq.intseq]
namespace
std
{
template
<
class
T, T
.
.
.
I
>
struct
integer_sequence
{
using
value_type
=
T;
static
constexpr
size_t size
(
)
noexcept
{
return
sizeof
.
.
.
(
I
)
;
}
}
;
}
1
#
Mandates
:
T
is an integer type
.
20.3.3
Alias template
make_integer_sequence
[intseq.make]
🔗
template
<
class
T, T N
>
using
make_integer_sequence
=
integer_sequence
<
T,
see below
>
;
1
#
Mandates
:
N
≥
0
.
2
#
The alias template
make_integer_sequence
denotes a specialization of
integer_sequence
with
N
non-type template arguments
.
The type
make_integer_sequence
<
T, N
>
is an alias for the type
integer_sequence
<
T,
0
,
1
,
.
.
.
, N
-
1
>
.
[
Note
1
:
make_integer_sequence
<
int
,
0
>
is an alias for the type
integer_sequence
<
int
>
.
—
end note
]