#Variadic Meta Programming A C++14 header-only library in namespace vmp
##Contents: Implementation of variadic type lists in TypeList.hpp:
- Random access via "part"
- Insert elements into a type via "rebind"
- Add elements at head via "athead"
- Add elements at tail via "attail"
- Apply a type to each element via "forall"
- Match and apply a type to each element via "rewrap"
- Define functions taking all types as arguments via "funptr"
- Define methods taking all types as arguments via "metptr"
Implementation of homogeneous integral constant lists in InCoList.hpp
- Random access via "part"
- Insert elements into a type via "rebind"
- Add elements at head via "athead"
- Add elements at tail via "attail"
- Apply a type to each element via "forall"
- Match and apply a type to each element via "rewrap"
- Apply a function or method to each element via "mapped"
- Evaluate a function or method taking all elements as arguments via "merged"
- Aggregate initialization of any type via "expand"
Implementation of heterogeneous data binding DataBind.hpp
- Default, Copy & Move construction and asssignment
- Call "operator (call)" calls "call(...)" using bound data as arguments
FunctionTypeList.hpp
- Decompose function pointer to return type and argument typelist
- Decompose method pointer to class type, return type and argument typelist
- Applies to class references (including lambdas) that implement operator () without overloading
TypeSets.hpp:
- Idenitify complementary types between lists via "typecomp"
- Union type lists via "typeunion"
- Intersect type lists via "typeinter"
ListManipulation.pp
- Join lists via "listjoin"
- Extract an interval from a list via "listrange"
- Transposed lists of lists via "transposed"
ListComparison.hpp:
- Identify indices of a type or value via "typesame"
- Verify uniqueness of values via "typeonce"
- Derive permutation relating type lists via "typeperm"
Implementation of integral constant variadic algebra in InCoVari.hpp
- Short-circuit variadic && and || as "and_sc" and "or_sc" respectively
Implementation of constant expression variadic algebra in CoExVari.hpp:
- Short-circuit variadic || and && as "or_all" and "and_all" respectively
- Variadic + and * as "plus_all" and "times_all" respectively
##Required to Compile:
- Git (https://git-scm.com)
- CMake (https://cmake.org)
##Required to Document:
- Doxygen (http://www.stack.nl/~dimitri/doxygen/)
- MathJax (https://www.mathjax.org)
##Included:
- Unit Testing (https://github.com/unittest-cpp/unittest-cpp)
- Doxygen filter for CMake (https://github.com/saschazelzer/CMakeDoxygenFilter)
- Conditional Sources and Verbose Message dependency (https://github.com/wal-rus/cmake-modules)
- Linux, MacOS and Windows .gitignore specifications (https://github.com/github/gitignore)