1616
1717namespace rtl ::dispatch
1818{
19- template <class place_t , class ...args_t >
20- struct method_lambda <erase::t_return, place_t , args_t ...> : lambda
21- {
22- using record_t = place_t ;
23- using lambda_vt = std::function<void (const lambda_base&, const record_t &, traits::normal_sign_t <args_t >...)>;
24- using lambda_rt = std::function<std::any(const lambda_base&, const record_t &, traits::normal_sign_t <args_t >...)>;
19+ template <class place_t , class ...args_t >
20+ struct method_lambda <fn_void::yes, erase::t_return, place_t , args_t ...> : lambda
21+ {
22+ using record_t = place_t ;
23+ using lambda_t = std::function<void (const lambda_base&, const record_t &, traits::normal_sign_t <args_t >...)>;
24+
25+ const lambda_t & get_hop () const {
26+ return m_lambda;
27+ }
28+
29+ private:
30+
31+ void set_hop (const lambda_t & lambda) {
32+ m_lambda = lambda;
33+ }
34+
35+ lambda_t m_lambda;
36+
37+ template <class , class , class ...>
38+ friend struct method_ptr ;
39+ };
40+ }
2541
26- const lambda_vt& get_vhop () const {
27- return std::get<lambda_vt>(m_lambda);
28- }
2942
30- const lambda_rt& get_rhop () const {
31- return std::get<lambda_rt>(m_lambda);
32- }
43+ namespace rtl ::dispatch
44+ {
45+ template <class place_t , class ...args_t >
46+ struct method_lambda <fn_void::no, erase::t_return, place_t , args_t ...> : lambda
47+ {
48+ using record_t = place_t ;
49+ using lambda_t = std::function<std::any(const lambda_base&, const record_t &, traits::normal_sign_t <args_t >...)>;
3350
34- private:
51+ const lambda_t & get_hop () const {
52+ return m_lambda;
53+ }
3554
36- std::variant<lambda_vt, lambda_rt> m_lambda;
55+ private:
3756
38- void set_vhop (const lambda_vt & lambda) {
39- m_lambda = lambda;
40- }
57+ void set_hop (const lambda_t & lambda) {
58+ m_lambda = lambda;
59+ }
4160
42- void set_rhop (const lambda_rt& lambda) {
43- m_lambda = lambda;
44- }
61+ lambda_t m_lambda;
4562
46- template <class , class , class ...>
47- friend struct method_ptr ;
48- };
63+ template <class , class , class ...>
64+ friend struct method_ptr ;
65+ };
4966}
5067
5168
5269namespace rtl ::dispatch
5370{
54- template <class place_t , class ...args_t >
55- struct method_lambda <erase::t_target, place_t , args_t ...> : lambda
56- {
57- using return_t = place_t ;
58- using lambda_vt = std::function<void (const lambda_base&, const rtl::RObject&, traits::normal_sign_t <args_t >...)>;
59- using lambda_rt = std::function<return_t (const lambda_base&, const rtl::RObject&, traits::normal_sign_t <args_t >...)>;
71+ template <class place_t , class ...args_t >
72+ struct method_lambda <fn_void::yes, erase::t_target, place_t , args_t ...> : lambda
73+ {
74+ using return_t = place_t ;
75+ using lambda_t = std::function<void (const lambda_base&, const rtl::RObject&, traits::normal_sign_t <args_t >...)>;
76+
77+ const lambda_t & get_hop () const {
78+ return m_lambda;
79+ }
80+
81+ private:
82+
83+ void set_hop (const lambda_t & lambda) {
84+ m_lambda = lambda;
85+ }
6086
61- const lambda_vt& get_vhop () const {
62- return std::get<lambda_vt>(m_lambda);
63- }
87+ lambda_t m_lambda;
6488
65- const lambda_rt& get_rhop () const {
66- return std::get<lambda_rt>(m_lambda);
67- }
89+ template <class , class , class ...>
90+ friend struct method_ptr ;
91+ };
92+ }
93+
94+
95+ namespace rtl ::dispatch
96+ {
97+ template <class place_t , class ...args_t >
98+ struct method_lambda <fn_void::no, erase::t_target, place_t , args_t ...> : lambda
99+ {
100+ using return_t = place_t ;
101+ using lambda_t = std::function<return_t (const lambda_base&, const rtl::RObject&, traits::normal_sign_t <args_t >...)>;
68102
69- private:
103+ const lambda_t & get_hop () const {
104+ return m_lambda;
105+ }
70106
71- std::variant<lambda_vt, lambda_rt> m_lambda;
107+ private:
72108
73- void set_vhop (const lambda_vt & lambda) {
74- m_lambda = lambda;
75- }
109+ void set_hop (const lambda_t & lambda) {
110+ m_lambda = lambda;
111+ }
76112
77- void set_rhop (const lambda_rt& lambda) {
78- m_lambda = lambda;
79- }
113+ lambda_t m_lambda;
80114
81- template <class , class , class ...>
82- friend struct method_ptr ;
83- };
115+ template <class , class , class ...>
116+ friend struct method_ptr ;
117+ };
84118}
0 commit comments