/*!
* \file utl/meta/meta.h
* \brief Meta library forward header
*/
#ifndef __utl_meta_meta_h__
#define __utl_meta_meta_h__
/*! \defgroup meta Meta
* An embedded metaprogramming library for uTL.
*
* uTL::meta is a simple metaprogramming library used widely inside uTL.
* The lib is provided to the end user via namespace \c utl::meta
* The library assembles:
*
* - integral constant based, operation and arithmetic functionality\n
* meta defines wrappers for all of integral types such as \c int, \c long, \c char, \c uint32_t etc...
* and also facilities to emulate:
* 1. conditional (if)
* 2. logical operations like \c or, \c and, \c not, \c bitor, \c bitand etc...
* 3. math operations like \c add, \c sub, \c modulo
* 4. comparison operations like \c equal, \c not_equal etc...
*
* All of these operate on integral types.
*
* - SFINAE wrappers as syntactic sugar to the rest of the uTL.
*
* - Walter's Brown detection idiom to help uTL concept implementation.
*
* - Higher order metafunction tools for composition.\n
* This module provides tools such as \c wrap, \c compose, \c fold, \c bind etc... The user can
* wrap metafunctions as types and pass them around to other metafunctions. The evaluation
* of these functions can be done both in aggressive or lazy maner using tools such as \c eval or \c invoke
*
* - typelist "container" implementation.\n
* Typelist is a container like template type holding the parameter list as items in the container.
* This facility has also all the expected eco-system of functions like \c push_front,
* \c push_back, \c at etc...
*/
#include
#include
#include
#include
#include
#endif /* __utl_meta_meta_h__ */