From 39c00a169432193e8baecdfd2117b3ce6585ecd0 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Sun, 6 Feb 2022 23:27:54 +0700 Subject: [PATCH] remove all std::bind usage --- headers/meta.hpp/meta_base/fixed_function.hpp | 11 +++++------ headers/meta.hpp/meta_states/ctor.hpp | 6 ++---- headers/meta.hpp/meta_states/dtor.hpp | 6 ++---- headers/meta.hpp/meta_states/function.hpp | 8 ++++---- headers/meta.hpp/meta_states/member.hpp | 16 ++++++++-------- headers/meta.hpp/meta_states/method.hpp | 8 ++++---- headers/meta.hpp/meta_states/variable.hpp | 13 +++++++------ headers/meta.hpp/meta_value.hpp | 2 +- 8 files changed, 33 insertions(+), 37 deletions(-) diff --git a/headers/meta.hpp/meta_base/fixed_function.hpp b/headers/meta.hpp/meta_base/fixed_function.hpp index b658e3b..75f8e32 100644 --- a/headers/meta.hpp/meta_base/fixed_function.hpp +++ b/headers/meta.hpp/meta_base/fixed_function.hpp @@ -78,7 +78,7 @@ namespace meta_hpp::detail struct vtable_t; vtable_t* vtable_{}; private: - using storage_t = std::aligned_storage_t; + using storage_t = std::aligned_storage_t; storage_t storage_{}; }; @@ -142,11 +142,10 @@ namespace meta_hpp::detail static void construct(fixed_function& dst, Functor&& functor) { using Fp = std::decay_t; - static_assert( - sizeof(Fp) <= MaxFunctorSize && - alignof(Fp) <= alignof(storage_t) && - std::is_invocable_r_v && - std::is_nothrow_move_constructible_v); + static_assert(sizeof(Fp) <= MaxFunctorSize); + static_assert(alignof(Fp) <= alignof(storage_t)); + static_assert(std::is_invocable_r_v); + static_assert(std::is_nothrow_move_constructible_v); ::new (&dst.storage_) Fp(std::forward(functor)); dst.vtable_ = vtable_t::get(); diff --git a/headers/meta.hpp/meta_states/ctor.hpp b/headers/meta.hpp/meta_states/ctor.hpp index e278d09..348d036 100644 --- a/headers/meta.hpp/meta_states/ctor.hpp +++ b/headers/meta.hpp/meta_states/ctor.hpp @@ -81,14 +81,12 @@ namespace meta_hpp::detail { template < ctor_policy_kind Policy, class_kind Class, typename... Args > ctor_state::invoke_impl make_ctor_invoke() { - using namespace std::placeholders; - return std::bind(&raw_ctor_invoke, _1); + return &raw_ctor_invoke; } template < class_kind Class, typename... Args > ctor_state::is_invocable_with_impl make_ctor_is_invocable_with() { - using namespace std::placeholders; - return std::bind(&raw_ctor_is_invocable_with, _1); + return &raw_ctor_is_invocable_with; } } diff --git a/headers/meta.hpp/meta_states/dtor.hpp b/headers/meta.hpp/meta_states/dtor.hpp index 06e6d22..a8029da 100644 --- a/headers/meta.hpp/meta_states/dtor.hpp +++ b/headers/meta.hpp/meta_states/dtor.hpp @@ -42,14 +42,12 @@ namespace meta_hpp::detail { template < class_kind Class > dtor_state::invoke_impl make_dtor_invoke() { - using namespace std::placeholders; - return std::bind(&raw_dtor_invoke, _1); + return &raw_dtor_invoke; } template < class_kind Class > dtor_state::is_invocable_with_impl make_dtor_is_invocable_with() { - using namespace std::placeholders; - return std::bind(&raw_dtor_is_invocable_with, _1); + return &raw_dtor_is_invocable_with; } } diff --git a/headers/meta.hpp/meta_states/function.hpp b/headers/meta.hpp/meta_states/function.hpp index a037297..b845980 100644 --- a/headers/meta.hpp/meta_states/function.hpp +++ b/headers/meta.hpp/meta_states/function.hpp @@ -85,14 +85,14 @@ namespace meta_hpp::detail { template < function_policy_kind Policy, function_kind Function > function_state::invoke_impl make_function_invoke(Function function) { - using namespace std::placeholders; - return std::bind(&raw_function_invoke, std::move(function), _1); + return [function = std::move(function)](std::span args){ + return raw_function_invoke(function, args); + }; } template < function_kind Function > function_state::is_invocable_with_impl make_function_is_invocable_with() { - using namespace std::placeholders; - return std::bind(&raw_function_is_invocable_with, _1); + return &raw_function_is_invocable_with; } } diff --git a/headers/meta.hpp/meta_states/member.hpp b/headers/meta.hpp/meta_states/member.hpp index 7cbbb56..ae208a8 100644 --- a/headers/meta.hpp/meta_states/member.hpp +++ b/headers/meta.hpp/meta_states/member.hpp @@ -121,26 +121,26 @@ namespace meta_hpp::detail { template < member_policy_kind Policy, member_kind Member > member_state::getter_impl make_member_getter(Member member) { - using namespace std::placeholders; - return std::bind(&raw_member_getter, std::move(member), _1); + return [member = std::move(member)](const inst& inst){ + return raw_member_getter(member, inst); + }; } template < member_kind Member > member_state::is_gettable_with_impl make_member_is_gettable_with() { - using namespace std::placeholders; - return std::bind(&raw_member_is_gettable_with, _1); + return &raw_member_is_gettable_with; } template < member_kind Member > member_state::setter_impl make_member_setter(Member member) { - using namespace std::placeholders; - return std::bind(&raw_member_setter, std::move(member), _1, _2); + return [member = std::move(member)](const inst& inst, const arg& arg){ + return raw_member_setter(member, inst, arg); + }; } template < member_kind Member > member_state::is_settable_with_impl make_member_is_settable_with() { - using namespace std::placeholders; - return std::bind(&raw_member_is_settable_with, _1, _2); + return &raw_member_is_settable_with; } } diff --git a/headers/meta.hpp/meta_states/method.hpp b/headers/meta.hpp/meta_states/method.hpp index c58da66..96b552e 100644 --- a/headers/meta.hpp/meta_states/method.hpp +++ b/headers/meta.hpp/meta_states/method.hpp @@ -98,14 +98,14 @@ namespace meta_hpp::detail { template < method_policy_kind Policy, method_kind Method > method_state::invoke_impl make_method_invoke(Method method) { - using namespace std::placeholders; - return std::bind(&raw_method_invoke, std::move(method), _1, _2); + return [method = std::move(method)](const inst& inst, std::span args){ + return raw_method_invoke(method, inst, args); + }; } template < method_kind Method > method_state::is_invocable_with_impl make_method_is_invocable_with() { - using namespace std::placeholders; - return std::bind(&raw_method_is_invocable_with, _1, _2); + return &raw_method_is_invocable_with; } } diff --git a/headers/meta.hpp/meta_states/variable.hpp b/headers/meta.hpp/meta_states/variable.hpp index 8e1c188..41f965f 100644 --- a/headers/meta.hpp/meta_states/variable.hpp +++ b/headers/meta.hpp/meta_states/variable.hpp @@ -75,20 +75,21 @@ namespace meta_hpp::detail { template < variable_policy_kind Policy, pointer_kind Pointer > variable_state::getter_impl make_variable_getter(Pointer pointer) { - using namespace std::placeholders; - return std::bind(&raw_variable_getter, std::move(pointer)); + return [pointer = std::move(pointer)](){ + return raw_variable_getter(pointer); + }; } template < pointer_kind Pointer > variable_state::setter_impl make_variable_setter(Pointer pointer) { - using namespace std::placeholders; - return std::bind(&raw_variable_setter, std::move(pointer), _1); + return [pointer = std::move(pointer)](const arg& arg){ + return raw_variable_setter(pointer, arg); + }; } template < pointer_kind Pointer > variable_state::is_settable_with_impl make_variable_is_settable_with() { - using namespace std::placeholders; - return std::bind(&raw_variable_is_settable_with, _1); + return &raw_variable_is_settable_with; } } diff --git a/headers/meta.hpp/meta_value.hpp b/headers/meta.hpp/meta_value.hpp index 0a08d50..9dba8d1 100644 --- a/headers/meta.hpp/meta_value.hpp +++ b/headers/meta.hpp/meta_value.hpp @@ -86,7 +86,7 @@ namespace meta_hpp struct vtable_t; vtable_t* vtable_{}; private: - using buffer_t = std::aligned_storage_t; + using buffer_t = std::aligned_storage_t; using storage_u = std::variant; storage_u storage_{}; };