CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
ContainsAll.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 "Count.hpp"
11#include "TypeList.hpp"
12
13#include <type_traits>
14
15namespace CeresEngine::MPL {
16
17 template<typename TCheckTypeList, typename TTypeList> struct ContainsAllHelper;
18
19 template<typename TCheckTypeList, typename TTypeList> inline constexpr bool ContainsAll = ContainsAllHelper<TCheckTypeList, TTypeList>::value;
20
21 template<typename T, typename... TRest, typename TTypeList>
23 : std::integral_constant<bool, Contains<T, TTypeList> && ContainsAll<TypeList<TRest...>, TTypeList>> {};
24
25 template<typename TTypeList> struct ContainsAllHelper<TypeList<>, TTypeList> : std::true_type {};
26} // namespace CeresEngine::MPL
Definition All.hpp:15
constexpr bool ContainsAll
Definition ContainsAll.hpp:19
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Definition ContainsAll.hpp:17
Compile-time list of types.
Definition TypeList.hpp:15