AUI Framework  master
Cross-platform module-based framework for developing C++20 desktop applications
members.h
1/*
2 * AUI Framework - Declarative UI toolkit for modern C++20
3 * Copyright (C) 2020-2024 Alex2772 and Contributors
4 *
5 * SPDX-License-Identifier: MPL-2.0
6 *
7 * This Source Code Form is subject to the terms of the Mozilla Public
8 * License, v. 2.0. If a copy of the MPL was not distributed with this
9 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 */
11
12#pragma once
13
14#include <algorithm>
15#include <tuple>
16
17namespace aui {
18 template<typename Type>
19 struct member;
20
21 template<typename Type, typename Clazz>
22 struct member<Type(Clazz::*)> {
23 using type = Type;
24 using clazz = Clazz;
25 };
26
27 template<typename Type, typename Clazz, typename... Args>
28 struct member<Type(Clazz::*)(Args...) const> {
29 using return_t = Type;
30 using clazz = Clazz;
35 using args = std::tuple<Args...>;
36 };
37
38 template<typename Type, typename Clazz, typename... Args>
39 struct member<Type(Clazz::*)(Args...)> {
40 using return_t = Type;
41 using clazz = Clazz;
46 using args = std::tuple<Args...>;
47 };
48
49 template<typename Type, typename Clazz, typename... Args>
50 struct member<Type(Clazz::*)(Args...) noexcept> {
51 using return_t = Type;
52 using clazz = Clazz;
57 using args = std::tuple<Args...>;
58 };
59
60 template<typename Type, typename Clazz, typename... Args>
61 struct member<Type(Clazz::*)(Args...) const noexcept> {
62 using return_t = Type;
63 using clazz = Clazz;
68 using args = std::tuple<Args...>;
69 };
70}
std::tuple< Args... > args
Argument types.
Definition: members.h:35
std::tuple< Args... > args
Argument types.
Definition: members.h:68
std::tuple< Args... > args
Argument types.
Definition: members.h:57
std::tuple< Args... > args
Argument types.
Definition: members.h:46
Definition: members.h:19