aboutsummaryrefslogtreecommitdiff
path: root/src/list/generator/detail/generate_nested_structure.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/list/generator/detail/generate_nested_structure.h')
-rw-r--r--src/list/generator/detail/generate_nested_structure.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/list/generator/detail/generate_nested_structure.h b/src/list/generator/detail/generate_nested_structure.h
new file mode 100644
index 0000000..84db78d
--- /dev/null
+++ b/src/list/generator/detail/generate_nested_structure.h
@@ -0,0 +1,39 @@
+#ifndef TYPEASVALUE_SRC_LIST_GENERATOR_DETAIL_GENERATE_NESTED_STRUCTURE_H_
+#define TYPEASVALUE_SRC_LIST_GENERATOR_DETAIL_GENERATE_NESTED_STRUCTURE_H_
+
+namespace tav {
+
+namespace detail {
+
+template <
+ template <typename, typename> class Structure,
+ template <typename> class Generator,
+ typename Initial,
+ typename Count
+>
+struct generate_nested_structure {
+ typedef Structure<
+ Initial,
+ Eval<generate_nested_structure<
+ Structure,
+ Generator,
+ Generator<Initial>,
+ Substract<Count, Size<1>>
+ >>
+ > type;
+};
+
+template <
+ template <typename, typename> class Structure,
+ template <typename> class Generator,
+ typename Initial
+>
+struct generate_nested_structure<Structure, Generator, Initial, Size<0>> {
+ typedef void type;
+};
+
+}
+
+}
+
+#endif // TYPEASVALUE_SRC_LIST_GENERATOR_DETAIL_GENERATE_NESTED_STRUCTURE_H_