Vcsn  2.0
Be Rational
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
tuple.hh File Reference
#include <iostream>
#include <tuple>
#include <vcsn/misc/hash.hh>
Include dependency graph for tuple.hh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  vcsn::detail::index_sequence<>
 
struct  vcsn::detail::concat< S1, S2 >
 
struct  vcsn::detail::concat< index_sequence< I1...>, index_sequence< I2...> >
 
struct  vcsn::detail::make_index_sequence< N >
 
struct  vcsn::detail::make_index_sequence< N >
 
struct  vcsn::detail::make_index_sequence< 0 >
 
struct  vcsn::detail::make_index_sequence< 1 >
 
struct  vcsn::detail::int_range< off, S2 >
 
struct  vcsn::detail::int_range< off, index_sequence< I...> >
 
struct  vcsn::detail::make_index_range< S, L >
 
struct  vcsn::detail::make_index_range< S, 0 >
 
struct  vcsn::detail::make_index_range< S,-1U >
 
struct  vcsn::detail::concat_index_sequence< S1, S2 >
 
struct  vcsn::detail::concat_index_sequence< index_sequence< I1...>, index_sequence< I2...> >
 
struct  vcsn::detail::tuple_printer< Tuple, N >
 
struct  vcsn::detail::tuple_printer< Tuple, 1 >
 
struct  vcsn::detail::if_c< c, T1, T2 >
 
struct  vcsn::detail::if_c< false, T1, T2 >
 
struct  vcsn::detail::if_< C, T1, T2 >
 
struct  vcsn::detail::eval_if_c< c, F1, F2 >
 
struct  vcsn::detail::eval_if< C, F1, F2 >
 
struct  vcsn::detail::and_< F >
 
struct  vcsn::detail::and_< F1, F...>
 
struct  vcsn::detail::and_< F1 >
 
struct  vcsn::detail::and_<>
 
struct  vcsn::detail::or_< F >
 
struct  vcsn::detail::or_< F1, F...>
 
struct  vcsn::detail::or_< F1 >
 
struct  vcsn::detail::or_<>
 
struct  std::hash< std::tuple< Elements...> >
 

Namespaces

 vcsn
 
 vcsn::detail
 

Typedefs

template<class S1 , class S2 >
using vcsn::detail::Concat = typename concat< S1, S2 >::type
 
template<std::size_t N>
using vcsn::detail::GenSeq = typename make_index_sequence< N >::type
 
template<typename S1 , typename S2 >
using vcsn::detail::concat_sequence = typename concat_index_sequence< S1, S2 >::type
 

Functions

template<typename Fun , typename... Ts>
void vcsn::detail::for_ (const std::tuple< Ts...> &ts, Fun f)
 
template<typename Fun , typename... Ts, size_t... I>
void vcsn::detail::for_ (Fun f, const std::tuple< Ts...> &ts, index_sequence< I...>)
 
template<typename Fun , typename... Ts>
auto vcsn::detail::map (const std::tuple< Ts...> &ts, Fun f) -> decltype(map_tuple_(f, ts, make_index_sequence< sizeof...(Ts)>()))
 Map a function on a tuple, return tuple of the results. More...
 
template<typename Fun , typename... Ts, size_t... I>
auto vcsn::detail::map_tuple_ (Fun f, const std::tuple< Ts...> &ts, index_sequence< I...>) -> decltype(map_variadic_(f, std::get< I >(ts)...))
 
template<typename Fun >
auto vcsn::detail::map_variadic_ (Fun) -> decltype(std::make_tuple())
 
template<typename Fun , typename T , typename... Ts>
auto vcsn::detail::map_variadic_ (Fun f, T t, Ts &&...ts) -> decltype(std::tuple_cat(std::make_tuple(f(t)), map_variadic_(f, ts...)))
 
template<typename... Ts>
auto vcsn::detail::reverse_tuple (const std::tuple< Ts...> &t) -> decltype(reverse_tuple(t, make_index_sequence< sizeof...(Ts)>()))
 
template<typename... Ts, std::size_t... I>
auto vcsn::detail::reverse_tuple (const std::tuple< Ts...> &t, index_sequence< I...>) -> decltype(std::make_tuple(std::get< sizeof...(Ts)-1-I >(t)...))
 
template<typename... Ts>
auto vcsn::detail::make_gcc_tuple (Ts &&...ts) -> decltype(reverse_tuple(std::make_tuple(std::forward< Ts >(ts)...)))
 Same as make_tuple, unless the evaluation of arguments if right-to-left, in which case reverse the result. More...
 
template<typename... Args>
std::ostream & vcsn::detail::print (const std::tuple< Args...> &args, std::ostream &o)
 
template<bool... B>
constexpr bool vcsn::any_ ()
 Static evaluation of the 'or' of the template parameters. More...
 
template<bool... B>
constexpr bool vcsn::all_ ()