Classes | Namespaces | Macros | Typedefs | Functions | Variables
TMPL.hpp File Reference

Wraps the template metaprogramming library used (brigand) More...

#include <brigand/brigand.hpp>
#include <initializer_list>
#include "Utilities/Digraph.hpp"
#include "Utilities/ForceInline.hpp"

Go to the source code of this file.

Classes

struct  tmpl2::value_list< T,... >
 A compile-time list of values of the same type. More...
 

Namespaces

 tmpl2
 Metaprogramming things that are not planned to be submitted to Brigand.
 

Macros

#define EXPAND_PACK_LEFT_TO_RIGHT(...)   (void)std::initializer_list<char> { ((void)(__VA_ARGS__), '0')... }
 Expand a parameter pack evaluating the terms from left to right. More...
 

Typedefs

template<bool... Bs>
using tmpl2::flat_all = std::is_same< value_list< bool, Bs... >, value_list< bool,(static_cast< void >(Bs), true)... > >
 A non-short-circuiting logical AND between bools 'B"". More...
 
template<bool... Bs>
using tmpl2::flat_any = std::integral_constant< bool, not std::is_same< value_list< bool, Bs... >, value_list< bool,(static_cast< void >(Bs), false)... > >::value >
 A non-short-circuiting logical OR between bools 'B"". More...
 

Functions

template<typename... Ts>
constexpr void expand_pack (Ts &&...) noexcept
 Allows zero-cost unordered expansion of a parameter. More...
 
template<typename T , typename... Ts>
decltype(auto) constexpr get_first_argument (T &&t, Ts &&...) noexcept
 Returns the first argument of a parameter pack.
 

Variables

template<bool... Bs>
constexpr bool tmpl2::flat_all_v = flat_all<Bs...>::value
 A non-short-circuiting logical AND between bools 'B"". More...
 
template<bool... Bs>
constexpr bool tmpl2::flat_any_v = flat_any<Bs...>::value
 A non-short-circuiting logical OR between bools 'B"". More...
 

Detailed Description

Wraps the template metaprogramming library used (brigand)