diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7a03f9a..1775dd1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,7 +36,7 @@ if(BUILD_TESTS)
add_subdirectory(tests)
endif()
-set(LIBREXY_PUBLIC_HEADERS "include/rexy/algorithm.hpp" "include/rexy/utility.hpp" "include/rexy/basic_string_hash.hpp" "include/rexy/hash.hpp" "include/rexy/static_string_hash.hpp" "include/rexy/string_hash.hpp" "include/rexy/mpmc_queue.hpp" "include/rexy/mpmc_queue.tpp" "include/rexy/traits.hpp" "include/rexy/steal.hpp" "include/rexy/binary.hpp" "include/rexy/expression.hpp" "include/rexy/binary_base.hpp" "include/rexy/binary_base.tpp" "include/rexy/string_base.hpp" "include/rexy/string.hpp" "include/rexy/filerd.hpp" "include/rexy/string_base.tpp" "include/rexy/allocator.hpp")
+set(LIBREXY_PUBLIC_HEADERS "include/rexy/algorithm.hpp" "include/rexy/utility.hpp" "include/rexy/basic_string_hash.hpp" "include/rexy/hash.hpp" "include/rexy/static_string_hash.hpp" "include/rexy/string_hash.hpp" "include/rexy/mpmc_queue.hpp" "include/rexy/mpmc_queue.tpp" "include/rexy/traits.hpp" "include/rexy/steal.hpp" "include/rexy/binary.hpp" "include/rexy/expression.hpp" "include/rexy/binary_base.hpp" "include/rexy/binary_base.tpp" "include/rexy/string_base.hpp" "include/rexy/string.hpp" "include/rexy/filerd.hpp" "include/rexy/string_base.tpp" "include/rexy/allocator.hpp" "include/rexy/meta.hpp")
target_compile_options(rexy PRIVATE -Wall -Wextra -pedantic -std=c++17)
install(TARGETS rexy
diff --git a/include/rexy/meta.hpp b/include/rexy/meta.hpp
new file mode 100644
index 0000000..4555ebf
--- /dev/null
+++ b/include/rexy/meta.hpp
@@ -0,0 +1,37 @@
+/**
+ This file is a part of rexy's general purpose library
+ Copyright (C) 2021 rexy712
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
+#ifndef REXY_META_HPP
+#define REXY_META_HPP
+
+namespace rexy{
+
+ template
+ struct sequence_tuple{};
+ template
+ struct sequence_gen : public sequence_gen{};
+ template
+ struct sequence_gen<0,Is...>{
+ using type = sequence_tuple;
+ };
+ template
+ using sequence_gen_t = typename sequence_gen::type;
+
+}
+
+#endif
diff --git a/src/ensure.cpp b/src/ensure.cpp
index 351828a..16d6baa 100644
--- a/src/ensure.cpp
+++ b/src/ensure.cpp
@@ -16,6 +16,7 @@
#include "rexy/string.hpp"
#include "rexy/traits.hpp"
#include "rexy/utility.hpp"
+#include "rexy/meta.hpp"
#include "rexy/detail/binary_string_conv.hpp"
#include "rexy/detail/string_appender.hpp"