CoriEngine
Loading...
Searching...
No Matches
TemplateUtils.hpp
Go to the documentation of this file.
1#pragma once
2
3namespace Cori {
4 namespace Utility {
8 template <typename T, typename... Types>
9 concept IsInPack = (std::same_as<T, Types> || ...);
10
11 namespace Internal {
12 template <typename... Types>
13 inline constexpr bool HasDuplicatesImpl = false;
14
15 template <typename T, typename... Rest>
16 inline constexpr bool HasDuplicatesImpl<T, Rest...> = IsInPack<T, Rest...> || HasDuplicatesImpl<Rest...>;
17 }
18
22 template <typename... Types>
24
28 template <typename T>
29 concept IsStreamable = requires(std::ostream& os, const T& val) {
30 { os << val } -> std::same_as<std::ostream&>;
31 };
32 }
33}
Checks if Types pack has duplicated types.
Checks if T is present in Types pack.
Checks if T can be streamed.
constexpr bool HasDuplicatesImpl
A namespace for utilities of different kinds.
Definition AABB.hpp:7
Global engine namespace.