diff --git a/meta.hpp b/meta.hpp
index e14e460fb5f06f276727ea540cc89a0a993c67ab..96e6048948a190e95345c4df28ae2161581398a6 100644
--- a/meta.hpp
+++ b/meta.hpp
@@ -54,6 +54,19 @@ namespace rlib {
     #endif
 
     template <size_t... forwardedArgs> struct argForwarder {};
-}
+
+    namespace impl {
+        template <typename T, std::size_t _>
+        using get_T = T;
+        template <typename T, std::size_t... _>
+        auto make_N_tuple_impl_f(std::index_sequence<_ ...>) {
+            using make_N_tuple_impl = std::tuple<get_T<T, _> ...>;
+            return make_N_tuple_impl();
+        }
+    } // end namespace rlib::impl
+    template <typename T, std::size_t N>
+    using N_tuple_t = decltype(impl::make_N_tuple_impl_f<T>(std::make_integer_sequence<std::size_t, N>()));
+
+} // end namespace rlib
 
 #endif