summaryrefslogtreecommitdiffstats
path: root/deps/include/entt/core/tuple.hpp
diff options
context:
space:
mode:
authoruntodesu <kirill@untode.su>2025-06-28 01:59:49 +0500
committeruntodesu <kirill@untode.su>2025-06-28 01:59:49 +0500
commit61e5bcef2629e2d68b805a956a96fff264d4f74d (patch)
treebca3a94bac79d34e3c0db57c77604f5a823ecbda /deps/include/entt/core/tuple.hpp
parent88c01588aa0830e219eaa62588839e4d1e2883ce (diff)
downloadvoxelius-61e5bcef2629e2d68b805a956a96fff264d4f74d.tar.bz2
voxelius-61e5bcef2629e2d68b805a956a96fff264d4f74d.zip
Restructure dependencies and update to C++20
- Nuked static_assert from almost everywhere in the project - Nuked binary dependency support. Might add one later though - Separated dependency headers into a separate include subdirectory - Grafted a thirdpartylegalnotices.txt generator from RITEG - Pushed development snapshot version to 2126 (26th week of 2025)
Diffstat (limited to 'deps/include/entt/core/tuple.hpp')
-rw-r--r--deps/include/entt/core/tuple.hpp95
1 files changed, 0 insertions, 95 deletions
diff --git a/deps/include/entt/core/tuple.hpp b/deps/include/entt/core/tuple.hpp
deleted file mode 100644
index a64c51c..0000000
--- a/deps/include/entt/core/tuple.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-#ifndef ENTT_CORE_TUPLE_HPP
-#define ENTT_CORE_TUPLE_HPP
-
-#include <tuple>
-#include <type_traits>
-#include <utility>
-
-namespace entt {
-
-/*! @cond TURN_OFF_DOXYGEN */
-namespace internal {
-
-template<typename>
-struct is_tuple_impl: std::false_type {};
-
-template<typename... Args>
-struct is_tuple_impl<std::tuple<Args...>>: std::true_type {};
-
-} // namespace internal
-/*! @endcond */
-
-/**
- * @brief Provides the member constant `value` to true if a given type is a
- * tuple, false otherwise.
- * @tparam Type The type to test.
- */
-template<typename Type>
-struct is_tuple: internal::is_tuple_impl<std::remove_cv_t<Type>> {};
-
-/**
- * @brief Helper variable template.
- * @tparam Type The type to test.
- */
-template<typename Type>
-inline constexpr bool is_tuple_v = is_tuple<Type>::value;
-
-/**
- * @brief Utility function to unwrap tuples of a single element.
- * @tparam Type Tuple type of any sizes.
- * @param value A tuple object of the given type.
- * @return The tuple itself if it contains more than one element, the first
- * element otherwise.
- */
-template<typename Type>
-constexpr decltype(auto) unwrap_tuple(Type &&value) noexcept {
- if constexpr(std::tuple_size_v<std::remove_reference_t<Type>> == 1u) {
- return std::get<0>(std::forward<Type>(value));
- } else {
- return std::forward<Type>(value);
- }
-}
-
-/**
- * @brief Utility class to forward-and-apply tuple objects.
- * @tparam Func Type of underlying invocable object.
- */
-template<typename Func>
-struct forward_apply: private Func {
- /**
- * @brief Constructs a forward-and-apply object.
- * @tparam Args Types of arguments to use to construct the new instance.
- * @param args Parameters to use to construct the instance.
- */
- template<typename... Args>
- constexpr forward_apply(Args &&...args) noexcept(std::is_nothrow_constructible_v<Func, Args...>)
- : Func{std::forward<Args>(args)...} {}
-
- /**
- * @brief Forwards and applies the arguments with the underlying function.
- * @tparam Type Tuple-like type to forward to the underlying function.
- * @param args Parameters to forward to the underlying function.
- * @return Return value of the underlying function, if any.
- */
- template<typename Type>
- constexpr decltype(auto) operator()(Type &&args) noexcept(noexcept(std::apply(std::declval<Func &>(), args))) {
- return std::apply(static_cast<Func &>(*this), std::forward<Type>(args));
- }
-
- /*! @copydoc operator()() */
- template<typename Type>
- constexpr decltype(auto) operator()(Type &&args) const noexcept(noexcept(std::apply(std::declval<const Func &>(), args))) {
- return std::apply(static_cast<const Func &>(*this), std::forward<Type>(args));
- }
-};
-
-/**
- * @brief Deduction guide.
- * @tparam Func Type of underlying invocable object.
- */
-template<typename Func>
-forward_apply(Func) -> forward_apply<std::remove_reference_t<std::remove_cv_t<Func>>>;
-
-} // namespace entt
-
-#endif