Loading...
Searching...
No Matches
Namespaces | Typedefs | Functions
tuple.h File Reference

Extensions for the STL tuple class. More...

#include <tuple>
#include <ostream>
#include "util/constfor.h"
#include "util/type_traits.h"

Go to the source code of this file.

Namespaces

namespace  bbm
 
namespace  std
 

Typedefs

template<typename T >
using to_tuple_t = decltype(to_tuple(std::declval< T >()))
 type of converting a type that supports std::get to a tuple
 
template<typename T >
using value_copy_tuple_t = decltype(value_copy_tuple(std::declval< std::decay_t< T > >()))
 value-copy type of a tuple.
 
template<typename... Ts>
using tuple_cat_t = decltype(std::tuple_cat(std::declval< Ts >()...))
 tuple_cat_t
 
template<size_t START, size_t COUNT, typename TUP >
using subtuple_t = decltype(subtuple< START, COUNT >(std::declval< TUP >()))
 subtuple type
 
template<typename T >
using tuple_flatten_t = decltype(tuple_flatten(std::declval< std::decay_t< T > >()))
 flattened tuple type
 
template<typename T >
using tuple_add_const_t = decltype(tuple_add_const(std::declval< std::decay_t< T > >()))
 tuple_add_const type
 
template<typename T >
using tuple_remove_const_t = decltype(tuple_remove_const(std::declval< std::decay_t< T > >()))
 tuple_remove_const type
 

Functions

template<typename T >
requires concepts::gettable<T>
auto to_tuple (T &&t)
 Create a tuple from any other type that supports std::get.
 
template<typename... ARGS>
constexpr auto make_ref_tuple (ARGS &&... args)
 Make a tuple of references.
 
template<typename... ARGS>
constexpr auto value_copy_tuple (const std::tuple< ARGS... > &tup)
 Value-copy a tuple.
 
template<size_t START, size_t COUNT, typename TUP >
requires is_tuple_v<TUP> && ((START+COUNT) <= std::tuple_size_v<std::decay_t<TUP>>)
constexpr auto subtuple (TUP &&tup)
 subtuple
 
template<typename T >
constexpr auto tuple_flatten (T &&t)
 Recursively flatten a tuple.
 
template<typename T >
constexpr auto tuple_add_const (T &&t)
 tuple_add_const to each element
 
template<typename T >
constexpr auto tuple_remove_const (T &&t)
 tuple_remove_const from each element
 
template<typename... Ts>
std::ostream & operator<< (std::ostream &s, const std::tuple< Ts... > &tup)
 print a tuple
 

Detailed Description

Extensions for the STL tuple class.