CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
is_totally_ordered.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
11
12#include <type_traits>
13
14namespace CeresEngine::traits {
15
18 template<class T, class = void> struct is_totally_ordered : std::false_type {};
19
20 template<class T>
21 struct is_totally_ordered<T,
22 std::void_t<
23 // clang-format off
24 decltype(std::declval<const std::remove_reference_t<T>&>() < std::declval<const std::remove_reference_t<T>&>()),
25 decltype(std::declval<const std::remove_reference_t<T>&>() > std::declval<const std::remove_reference_t<T>&>()),
26 decltype(std::declval<const std::remove_reference_t<T>&>() <= std::declval<const std::remove_reference_t<T>&>()),
27 decltype(std::declval<const std::remove_reference_t<T>&>() >= std::declval<const std::remove_reference_t<T>&>())
28 // clang-format on
29 >> : is_equality_comparable<T> {};
30
32 template<class T> bool constexpr is_totally_ordered_v = is_totally_ordered<T>::value;
33
35 template<class T>
37
38} // namespace CeresEngine::traits
Definition is_totally_ordered.hpp:36
Definition Partitioner.hpp:146
bool constexpr is_totally_ordered_v
A C++17 type trait equivalent to the C++20 totally_ordered concept.
Definition is_totally_ordered.hpp:32
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 equality_comparable concept.
Definition is_equality_comparable.hpp:16
A C++17 type trait equivalent to the C++20 totally_ordered concept.
Definition is_totally_ordered.hpp:18