Nui
Loading...
Searching...
No Matches
reference.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <functional>
6#include <memory>
7#include <type_traits>
8
9namespace Nui::Dom
10{
11 template <typename T>
13 {
14 public:
15 explicit ReferencePasser(T&& func)
16 : func_{std::move(func)}
17 {}
18 void operator()(std::weak_ptr<BasicElement>&& weakElement) const
19 {
20 func_(std::move(weakElement));
21 }
22
23 private:
24 std::function<void(std::weak_ptr<BasicElement>&&)> func_;
25 };
26
27 namespace Detail
28 {
29 template <typename T>
30 struct IsReferencePasser : std::false_type
31 {};
32 template <typename T>
33 struct IsReferencePasser<ReferencePasser<T>> : std::true_type
34 {};
35 }
36
37 template <typename T>
38 concept IsNotReferencePasser = !Detail::IsReferencePasser<T>::value;
39 template <typename T>
40 concept IsReferencePasser = Detail::IsReferencePasser<T>::value;
41}
Definition reference.hpp:38
Definition reference.hpp:40
Definition basic_element.hpp:12
Definition reference.hpp:13
ReferencePasser(T &&func)
Definition reference.hpp:15
void operator()(std::weak_ptr< BasicElement > &&weakElement) const
Definition reference.hpp:18