CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
Repeat.hpp
Go to the documentation of this file.
1//
2// CeresEngine - A game development framework
3//
4// Created by Rogiel Sulzbach.
5// Copyright (c) 2018-2022 Rogiel Sulzbach. All rights reserved.
6//
7
8#pragma once
9
10#include "TypeList.hpp"
11#include "TypeListOps.hpp"
12
13#include <type_traits>
14
15namespace CeresEngine::MPL {
16
17 template<std::size_t TTimes, typename T> struct RepeatHelper;
18
20 template<std::size_t TTimes, typename T> using Repeat = typename RepeatHelper<TTimes, T>::type;
21
23 template<std::size_t TTimes, typename T> struct RepeatHelper { using type = PushBack<T, Repeat<TTimes - 1, T>>; };
24
26 template<typename T> struct RepeatHelper<0, T> { using type = TypeList<>; };
27} // namespace CeresEngine::MPL
Definition All.hpp:15
typename RepeatHelper< TTimes, T >::type Repeat
Interface type alias.
Definition Repeat.hpp:20
Concat< TTypeList, TypeList< T > > PushBack
Adds a type to the back of a type list.
Definition TypeListOps.hpp:32
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Repeat recursive case: TTimes repetitions left.
Definition Repeat.hpp:23
PushBack< T, Repeat< TTimes - 1, T > > type
Definition Repeat.hpp:23
Compile-time list of types.
Definition TypeList.hpp:15