From c01f0ffbe08d1932c59dfd05fe7064348f55026e Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sat, 19 Nov 2022 13:14:49 +0100 Subject: entity: simplify some template invocations --- entity/metadata.hpp | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/entity/metadata.hpp b/entity/metadata.hpp index 2aae47f9..5aa1febf 100644 --- a/entity/metadata.hpp +++ b/entity/metadata.hpp @@ -48,28 +48,22 @@ template using decay_tuple = typename decay_tuple_::type; template struct accessors_for_ { using type = decay_tuple>; }; template using accessors_for = typename accessors_for_::type; -template struct find_reader_; +template struct find_reader; -template struct find_reader_ { +template struct find_reader { using type = Default; static constexpr std::size_t index = I; }; template -struct find_reader_ { - using type = typename find_reader_::type; - static constexpr std::size_t index = find_reader_::index; +struct find_reader { + using type = typename find_reader::type; + static constexpr std::size_t index = find_reader::index; }; template requires FieldReader -struct find_reader_ { using type = F; static constexpr std::size_t index = I; }; - -template -using find_reader = typename find_reader_...>::type; - -template -constexpr std::size_t find_reader_index = find_reader_...>::index; +struct find_reader { using type = F; static constexpr std::size_t index = I; }; template constexpr auto constantly = [](const Obj&) constexpr { return constant; }; @@ -85,12 +79,13 @@ struct entity_field : entity_field_base { private: static constexpr auto default_predicate = detail::constantly; using default_predicate_t = std::decay_t; + using predicate_ = detail::find_reader; public: using ObjectType = Obj; using FieldType = Type; using Reader = R; using Writer = W; - using Predicate = std::decay_t>; + using Predicate = typename predicate_::type; StringView name; [[no_unique_address]] R reader; @@ -107,7 +102,7 @@ public: static constexpr field_status is_enabled(const Predicate & p, const Obj& x); constexpr entity_field(StringView name, R r, W w, Ts&&... ts) noexcept : name{name}, reader{r}, writer{w}, - predicate{std::get>(std::forward_as_tuple(ts..., default_predicate))} + predicate{std::get(std::forward_as_tuple(ts..., default_predicate))} {} constexpr erased_accessor erased() const; }; -- cgit v1.2.3