tlx
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
index_sequence.hpp
Go to the documentation of this file.
1
/*******************************************************************************
2
* tlx/meta/index_sequence.hpp
3
*
4
* Part of tlx - http://panthema.net/tlx
5
*
6
* Copyright (C) 2016-2017 Timo Bingmann <tb@panthema.net>
7
*
8
* All rights reserved. Published under the Boost Software License, Version 1.0
9
******************************************************************************/
10
11
#ifndef TLX_META_INDEX_SEQUENCE_HEADER
12
#define TLX_META_INDEX_SEQUENCE_HEADER
13
14
#include <cstddef>
15
16
namespace
tlx
{
17
18
//! \addtogroup tlx_meta
19
//! \{
20
21
// Compile-time integer sequences, an implementation of std::index_sequence and
22
// std::make_index_sequence, as these are not available in many current
23
// libraries (MS Visual C++).
24
template
<
size_t
... Indexes>
25
struct
index_sequence
{
26
static
size_t
size
() {
return
sizeof
... (Indexes); }
27
};
28
29
namespace
meta_detail {
30
31
template
<
size_t
CurrentIndex,
size_t
... Indexes>
32
struct
make_index_sequence_helper
;
33
34
template
<
size_t
... Indexes>
35
struct
make_index_sequence_helper
<0, Indexes...> {
36
using
type
=
index_sequence
<Indexes...>;
37
};
38
39
template
<
size_t
CurrentIndex,
size_t
... Indexes>
40
struct
make_index_sequence_helper
{
41
using
type
=
typename
make_index_sequence_helper
<
42
CurrentIndex - 1, CurrentIndex - 1, Indexes...>
::type
;
43
};
44
45
}
// namespace meta_detail
46
47
template
<
size_t
Size>
48
struct
make_index_sequence
49
:
public
meta_detail::make_index_sequence_helper
<Size>::type { };
50
51
//! \}
52
53
}
// namespace tlx
54
55
#endif // !TLX_META_INDEX_SEQUENCE_HEADER
56
57
/******************************************************************************/
tlx::index_sequence::size
static size_t size()
Definition:
index_sequence.hpp:26
tlx::make_index_sequence
Definition:
index_sequence.hpp:48
tlx
Definition:
exclusive_scan.hpp:17
tlx::meta_detail::make_index_sequence_helper
Definition:
index_sequence.hpp:32
tlx::meta_detail::make_index_sequence_helper::type
typename make_index_sequence_helper< CurrentIndex-1, CurrentIndex-1, Indexes... >::type type
Definition:
index_sequence.hpp:42
tlx::index_sequence
Definition:
index_sequence.hpp:25
tlx
meta
index_sequence.hpp
Generated on Sat Oct 2 2021 20:29:00 for tlx by
1.8.11