aboutsummaryrefslogtreecommitdiff
path: root/src/support/type/sequence.h
blob: a404e713f9c9ba0dec7d9312fa48203bdbc77956 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#ifndef INPUTXSLT_SRC_SUPPORT_TYPE_SEQUENCE_H_
#define INPUTXSLT_SRC_SUPPORT_TYPE_SEQUENCE_H_

#include <cstddef>
#include <type_traits>

namespace InputXSLT {

template <std::size_t...>
struct Sequence {
	typedef Sequence type;
};

template <
	std::size_t Size,
	std::size_t Index = 0,
	std::size_t... Current
>
struct IndexSequence {
	typedef typename std::conditional<
		Index < Size,
		IndexSequence<Size, Index + 1, Current..., Index>,
		Sequence<Current...>
	>::type::type type;
};

}

#endif  // INPUTXSLT_SRC_SUPPORT_TYPE_SEQUENCE_H_