BuGUI
BUtton Grid User Interface
Loading...
Searching...
No Matches
common.hpp
1#pragma once
2#include <concepts>
3
4namespace bugui
5{
6#define ENUM_CHECK(Enum, Value) \
7template <typename Tp> \
8concept Enum##_enum_##Value = Tp::Enum() \
9 == decltype(Tp::Enum())::Value;
10
11#define EMPTY_ENUM_CHECK(E) \
12template <typename Tp> \
13concept E##_empty_enum = std::is_enum_v<typename Tp::E>;
14
15template <typename Tp, typename Up>
16concept different = !std::same_as<Tp, Up>;
17
18template <typename Tp>
19concept is_void = std::is_void_v<Tp>;
20
21template <typename Tp>
22concept integral_no_bool = std::integral<Tp>
24
25template <typename Tp>
26concept 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
Definition common.hpp:26
Definition common.hpp:16
Definition common.hpp:22
Definition common.hpp:19