BuGUI
BUtton Grid User Interface
Loading...
Searching...
No Matches
common.hpp
1
#pragma once
2
#include <concepts>
3
4
namespace
bugui
5
{
6
#define ENUM_CHECK(Enum, Value) \
7
template <typename Tp> \
8
concept Enum##_enum_##Value = Tp::Enum() \
9
== decltype(Tp::Enum())::Value;
10
11
#define EMPTY_ENUM_CHECK(E) \
12
template <typename Tp> \
13
concept E##_empty_enum = std::is_enum_v<typename Tp::E>;
14
15
template
<
typename
Tp,
typename
Up>
16
concept
different
= !std::same_as<Tp, Up>;
17
18
template
<
typename
Tp>
19
concept
is_void
= std::is_void_v<Tp>;
20
21
template
<
typename
Tp>
22
concept
integral_no_bool
= std::integral<Tp>
23
&&
different<Tp, bool>
;
24
25
template
<
typename
Tp>
26
concept
array_like
=
requires
(Tp t)
27
{
28
t.begin();
29
t.cbegin();
30
t.end();
31
t.cend();
32
t.size();
33
t[0];
34
};
35
36
}
// namespace bugui
bugui::array_like
Definition
common.hpp:26
bugui::different
Definition
common.hpp:16
bugui::integral_no_bool
Definition
common.hpp:22
bugui::is_void
Definition
common.hpp:19
include
bugui
concepts
common.hpp
Generated by
1.16.1