/*! * \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__ */