pack.hpp File Reference
#include <ableton/build_system/Warnings.hpp>
#include <boost/mpl/sequence_tag.hpp>
#include <boost/mpl/pop_front_fwd.hpp>
#include <boost/mpl/push_front_fwd.hpp>
#include <boost/mpl/push_back_fwd.hpp>
#include <boost/mpl/front_fwd.hpp>
#include <boost/mpl/empty_fwd.hpp>
#include <boost/mpl/size_fwd.hpp>
#include <boost/mpl/at_fwd.hpp>
#include <boost/mpl/back_fwd.hpp>
#include <boost/mpl/clear_fwd.hpp>
#include <boost/mpl/pop_back_fwd.hpp>
#include <boost/mpl/iterator_tags.hpp>
#include <boost/mpl/next_prior.hpp>
#include <boost/mpl/deref.hpp>
#include <boost/mpl/begin_end_fwd.hpp>
#include <type_traits>

Go to the source code of this file.

Classes

struct  pack< Ts >
 MPL-compatible sequence that just holds a vector of types as a paremeter pack. More...
 
struct  pack_iterator< Args >
 
struct  pack_iterator< atria::meta::pack< Args... > >
 
struct  sequence_tag< atria::meta::pack< Args... > >
 
struct  front_impl< atria::meta::pack_tag >
 
struct  front_impl< atria::meta::pack_tag >::apply< PackT >
 
struct  front_impl< atria::meta::pack_tag >::apply< atria::meta::pack< T, Ts... > >
 
struct  empty_impl< atria::meta::pack_tag >
 
struct  empty_impl< atria::meta::pack_tag >::apply< PackT >
 
struct  empty_impl< atria::meta::pack_tag >::apply< atria::meta::pack< Ts... > >
 
struct  pop_front_impl< atria::meta::pack_tag >
 
struct  pop_front_impl< atria::meta::pack_tag >::apply< PackT >
 
struct  pop_front_impl< atria::meta::pack_tag >::apply< atria::meta::pack< First, Types... > >
 
struct  push_front_impl< atria::meta::pack_tag >
 
struct  push_front_impl< atria::meta::pack_tag >::apply< PackT, T >
 
struct  push_front_impl< atria::meta::pack_tag >::apply< atria::meta::pack< Args... >, T >
 
struct  push_back_impl< atria::meta::pack_tag >
 
struct  push_back_impl< atria::meta::pack_tag >::apply< PackT, T >
 
struct  push_back_impl< atria::meta::pack_tag >::apply< atria::meta::pack< Args... >, T >
 
struct  size_impl< atria::meta::pack_tag >
 
struct  size_impl< atria::meta::pack_tag >::apply< PackT >
 
struct  size_impl< atria::meta::pack_tag >::apply< atria::meta::pack< Ts... > >
 
struct  at_impl< atria::meta::pack_tag >
 
struct  at_impl< atria::meta::pack_tag >::apply< T >
 
struct  back_impl< atria::meta::pack_tag >
 
struct  back_impl< atria::meta::pack_tag >::apply< T >
 
struct  clear_impl< atria::meta::pack_tag >
 
struct  clear_impl< atria::meta::pack_tag >::apply< PackT >
 
struct  pop_back_impl< atria::meta::pack_tag >
 
struct  pop_back_impl< atria::meta::pack_tag >::apply< T >
 
struct  begin_impl< atria::meta::pack_tag >
 
struct  begin_impl< atria::meta::pack_tag >::apply< PackT >
 
struct  end_impl< atria::meta::pack_tag >
 
struct  end_impl< atria::meta::pack_tag >::apply< typename >
 
struct  deref< atria::meta::pack_iterator< atria::meta::pack< First, Args... > > >
 
struct  next< atria::meta::pack_iterator< atria::meta::pack< First, Args... > > >
 

Namespaces

 atria
 C++ amazing templates and reusable implementations awesomeness.
 
 atria::meta
 Metaprogramming tools, including some Booost.MPL adaptors and concept checking facilities.
 

Typedefs

template<template< typename... > class MF, typename T >
using unpack = typename detail::unpack< MF, T >::type
 Metafunction that given a variadic template MF and a type ArgT, returns MF<ArgT>, or if ArgT is of the form pack<Args...> then returns MF<Args...>. More...
 
template<template< typename... > class MF, typename T >
using unpack_t = typename unpack< MF, T >::type
 

Functions

template<typename... Ts1, typename... Ts2>
constexpr bool operator== (const pack< Ts1... > &, const pack< Ts2... > &)
 Two packs are equal if they are of the same type. More...
 
template<typename... Ts1, typename... Ts2>
constexpr bool operator!= (const pack< Ts1... > &, const pack< Ts2... > &)
 Two packs are different if they are of different types. More...
 
Fork me on GitHub