xtd - Reference Guide  0.1.0
Modern c++17/20 framework to create console, GUI and unit test applications on Windows, macOS, Linux, iOS and android.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
overload.h
Go to the documentation of this file.
1
4#pragma once
5
6#include <functional>
7
9namespace xtd {
16 template <typename... args_t>
21 template <typename result_t, typename type_t>
22 constexpr auto operator()(result_t (type_t::*method)(args_t...)) const noexcept -> decltype(method) {return method;}
26 template <typename result_t, typename type_t>
27 static constexpr auto of(result_t (type_t::*method)(args_t...)) noexcept -> decltype(method) {return method;}
28 };
29
34 template <typename... args_t>
39 template <typename result_t, typename type_t>
40 constexpr auto operator()(result_t (type_t::*method)(args_t...) const) const noexcept -> decltype(method) {return method;}
44 template <typename result_t, typename type_t>
45 static constexpr auto of(result_t (type_t::*method)(args_t...) const) noexcept -> decltype(method) {return method;}
46 };
47
52 template <typename... args_t>
53 struct overload : const_overload<args_t...>, non_const_overload<args_t...> {
55 using const_overload<args_t...>::of;
56 using const_overload<args_t...>::operator();
57 using non_const_overload<args_t...>::of;
58 using non_const_overload<args_t...>::operator();
60
64 template <typename result_t>
65 constexpr auto operator()(result_t (*method)(args_t...)) const noexcept -> decltype(method) {return method;}
69 template <typename result_t>
70 static constexpr auto of(result_t (*method)(args_t...)) noexcept -> decltype(method) {return method;}
71 };
72
74 template <typename... args_t>
75 inline const overload<args_t...> overload_;
76
77 template <typename... args_t>
78 inline const const_overload<args_t...> const_overload_;
79
80 template <typename... args_t>
81 inline const non_const_overload<args_t...> non_const_overload_;
83}
84
91#define overload_ xtd::overload_
92
99#define const_overload_ xtd::const_overload_
100
107#define non_const_overload_ xtd::non_const_overload_
#define const_overload_
Helper keyword that use to determine one of const overloaded methods.
Definition: overload.h:99
#define overload_
Helper keyword that use to determine one of const and non const overloaded methods.
Definition: overload.h:91
#define non_const_overload_
Helper keyword that use to determine one of non const overloaded methods.
Definition: overload.h:107
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition: system_report.h:17
Represents class that use to determine one of const overloaded methods.
Definition: overload.h:35
static constexpr auto of(result_t(type_t::*method)(args_t...) const) noexcept -> decltype(method)
Returns a pointer to an overloaded method. The template parameter is the list of the argument types o...
Definition: overload.h:45
constexpr auto operator()(result_t(type_t::*method)(args_t...) const) const noexcept -> decltype(method)
Returns a pointer to an overloaded method. The template parameter is the list of the argument types o...
Definition: overload.h:40
Represents class that use to determine one of non const overloaded methods.
Definition: overload.h:17
static constexpr auto of(result_t(type_t::*method)(args_t...)) noexcept -> decltype(method)
Returns a pointer to an overloaded method. The template parameter is the list of the argument types o...
Definition: overload.h:27
constexpr auto operator()(result_t(type_t::*method)(args_t...)) const noexcept -> decltype(method)
Returns a pointer to an overloaded method. The template parameter is the list of the argument types o...
Definition: overload.h:22
Represents class that use to determine one of const and non const overloaded methods.
Definition: overload.h:53
constexpr auto operator()(result_t(*method)(args_t...)) const noexcept -> decltype(method)
Returns a pointer to an overloaded method. The template parameter is the list of the argument types o...
Definition: overload.h:65
static constexpr auto of(result_t(*method)(args_t...)) noexcept -> decltype(method)
Returns a pointer to an overloaded method. The template parameter is the list of the argument types o...
Definition: overload.h:70