CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
is_partially_ordered_with.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 <type_traits>
11
12namespace CeresEngine::traits {
13
16 template<class T, class U, class = void> struct is_partially_ordered_with : std::false_type {};
17
18 template<class T, class U>
20 std::void_t<
21 // clang-format off
22 decltype(std::declval<const std::remove_reference_t<T>&>() < std::declval<const std::remove_reference_t<U>&>()),
23 decltype(std::declval<const std::remove_reference_t<T>&>() > std::declval<const std::remove_reference_t<U>&>()),
24 decltype(std::declval<const std::remove_reference_t<T>&>() <= std::declval<const std::remove_reference_t<U>&>()),
25 decltype(std::declval<const std::remove_reference_t<T>&>() >= std::declval<const std::remove_reference_t<U>&>()),
26 decltype(std::declval<const std::remove_reference_t<U>&>() < std::declval<const std::remove_reference_t<T>&>()),
27 decltype(std::declval<const std::remove_reference_t<U>&>() > std::declval<const std::remove_reference_t<T>&>()),
28 decltype(std::declval<const std::remove_reference_t<U>&>() <= std::declval<const std::remove_reference_t<T>&>()),
29 decltype(std::declval<const std::remove_reference_t<U>&>() >= std::declval<const std::remove_reference_t<T>&>())
30 // clang-format on
31 >> : std::true_type {};
32
34 template<class T, class U> bool constexpr is_partially_ordered_with_v = is_partially_ordered_with<T, U>::value;
35
37 template<class T, class U> bool constexpr partially_ordered_with = is_partially_ordered_with_v<T, U>;
38
39} // namespace CeresEngine::traits
Definition Partitioner.hpp:146
bool constexpr partially_ordered_with
A C++17 type trait equivalent to the C++20 partially_ordered_with concept.
Definition is_partially_ordered_with.hpp:37
bool constexpr is_partially_ordered_with_v
A C++17 type trait equivalent to the C++20 partially_ordered_with concept.
Definition is_partially_ordered_with.hpp:34
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Definition Span.hpp:668
A C++17 type trait equivalent to the C++20 partially_ordered_with concept.
Definition is_partially_ordered_with.hpp:16