Skip to content

Reification/VariadicMetaProgramming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

186 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#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:

##Required to Document:

##Included:

About

Variadic Meta Programming Library

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors