Metaprogramming tools move alot of runtime calculations to be shifted to compile time. This has only very elementary structures at this stage.
At this point, this package only provides very elementary support to the other ecl template classes. Alot of ideas for these elements come from both boost and the book "C++ Template Metaprogramming" by D.Abrahams.
Include the following at the top of any translation unit:
Since it is a collection of template classes, no linking is required.
Often used in the is_such_and_such_class traits testing classes. For example:
These allow you to various compile tricks with SFINAE (Substitution Failure Is Not An Error). One usage case is to specialise a template class for a whole group of classes that register with a common type trait.
Simple class that guarantees a compile time failure if an attempt to instantiate it is made (private constructor). Commonly you would use with the mpl if function.
For example, the parent template definition above could be instead:
Convert from one type to another in compile time.
That example is trivial, but is more useful when using it for template arguments in a class.