summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2022-11-15 23:57:47 +0100
committerStanislaw Halik <sthalik@misaki.pl>2022-11-15 23:57:47 +0100
commit652785f8fc5e312fbb5e5d29c3ac55ace1d9b327 (patch)
tree42613857bac41b1727febdb09b553e9f21da2ecd /src
parentba235622db7a79567166ea363dd3c0c3ef353d98 (diff)
put all 'namespace detail' stuff in one place
Diffstat (limited to 'src')
-rw-r--r--src/entity.hpp56
1 files changed, 26 insertions, 30 deletions
diff --git a/src/entity.hpp b/src/entity.hpp
index 44f6295a..50b8a4d0 100644
--- a/src/entity.hpp
+++ b/src/entity.hpp
@@ -121,6 +121,32 @@ constexpr inline std::size_t strlen_(const char* s)
#endif
}
+template<typename F, typename Tuple, std::size_t N>
+requires std::invocable<F, decltype(std::get<N>(std::declval<Tuple>()))>
+constexpr CORRADE_ALWAYS_INLINE void visit_tuple(F&& fun, Tuple&& tuple)
+{
+ using Size = std::tuple_size<std::remove_cvref_t<Tuple>>;
+ static_assert(N < Size());
+
+ fun(std::get<N>(tuple));
+ if constexpr(N+1 < Size())
+ visit_tuple<F, Tuple, N+1>(std::forward<F>(fun), std::forward<Tuple>(tuple));
+}
+
+template<typename F, typename Tuple, std::size_t N>
+requires std::is_invocable_r_v<bool, F, decltype(std::get<N>(std::declval<Tuple>()))>
+constexpr CORRADE_ALWAYS_INLINE bool find_in_tuple(F&& fun, Tuple&& tuple)
+{
+ using Size = std::tuple_size<std::remove_cvref_t<Tuple>>;
+ static_assert(N < Size());
+
+ if (fun(std::get<N>(tuple)))
+ return true;
+ if constexpr(N+1 < Size())
+ return find_in_tuple<F, Tuple, N+1>(std::forward<F>(fun), std::forward<Tuple>(tuple));
+ return false;
+}
+
} // namespace detail
struct EntityBase {};
@@ -162,36 +188,6 @@ struct Entity final : EntityBase {
};
};
-namespace detail {
-
-template<typename F, typename Tuple, std::size_t N>
-requires std::invocable<F, decltype(std::get<N>(std::declval<Tuple>()))>
-constexpr CORRADE_ALWAYS_INLINE void visit_tuple(F&& fun, Tuple&& tuple)
-{
- using Size = std::tuple_size<std::remove_cvref_t<Tuple>>;
- static_assert(N < Size());
-
- fun(std::get<N>(tuple));
- if constexpr(N+1 < Size())
- visit_tuple<F, Tuple, N+1>(std::forward<F>(fun), std::forward<Tuple>(tuple));
-}
-
-template<typename F, typename Tuple, std::size_t N>
-requires std::is_invocable_r_v<bool, F, decltype(std::get<N>(std::declval<Tuple>()))>
-constexpr CORRADE_ALWAYS_INLINE bool find_in_tuple(F&& fun, Tuple&& tuple)
-{
- using Size = std::tuple_size<std::remove_cvref_t<Tuple>>;
- static_assert(N < Size());
-
- if (fun(std::get<N>(tuple)))
- return true;
- if constexpr(N+1 < Size())
- return find_in_tuple<F, Tuple, N+1>(std::forward<F>(fun), std::forward<Tuple>(tuple));
- return false;
-}
-
-} // namespace detail
-
template<typename F, typename Tuple>
constexpr void visit_tuple(F&& fun, Tuple&& tuple)
{