Classes | Macros | Typedefs | Functions
TaggedTuple.hpp File Reference

Defines class tuples::TaggedTuple. More...

#include <cstddef>
#include <functional>
#include <initializer_list>
#include <ostream>
#include <utility>
#include "Parallel/PupStlCpp11.hpp"
#include "Utilities/Overloader.hpp"
#include "Utilities/TypeTraits.hpp"
#include <stack>
#include <string>

Go to the source code of this file.

Classes

class  tuples::TaggedTuple< Tags >
 An associative container that is indexed by structs. More...
 
class  tuples::TaggedTuple< Tags >
 An associative container that is indexed by structs. More...
 
class  tuples::TaggedTuple<>
 
struct  tuples::tuple_size< T >
 
struct  tuples::tuple_size< TaggedTuple< Tags... > >
 
struct  tuples::tuple_size< const TaggedTuple< Tags... > >
 
struct  tuples::tuple_size< volatile TaggedTuple< Tags... > >
 
struct  tuples::tuple_size< const volatile TaggedTuple< Tags... > >
 

Typedefs

template<class Tag >
using tuples::tag_type = typename Tag::type
 Returns the type of the Tag.
 
template<typename T >
using tuples::tagged_tuple_from_typelist = typename TaggedTuple_detail::tagged_tuple_typelist_impl< T >::type
 

Functions

template<class... LTags, class... RTags, typename std::enable_if< sizeof...(LTags)==sizeof...(RTags)>::type * = nullptr>
TUPLES_LIB_CONSTEXPR_CXX_14 bool tuples::operator== (TaggedTuple< LTags... > const &lhs, TaggedTuple< RTags... > const &rhs) noexcept(noexcept(tuples_detail::tuple_equal_impl(lhs, rhs)))
 
template<class... LTags, class... RTags, typename std::enable_if< sizeof...(LTags)==sizeof...(RTags)>::type * = nullptr>
TUPLES_LIB_CONSTEXPR_CXX_14 bool tuples::operator!= (TaggedTuple< LTags... > const &lhs, TaggedTuple< RTags... > const &rhs) noexcept(noexcept(lhs==rhs))
 
template<class... LTags, class... RTags, typename std::enable_if< sizeof...(LTags)==sizeof...(RTags)>::type * = nullptr>
TUPLES_LIB_CONSTEXPR_CXX_14 bool tuples::operator< (TaggedTuple< LTags... > const &lhs, TaggedTuple< RTags... > const &rhs) noexcept(noexcept(tuples_detail::tuple_less_impl(lhs, rhs)))
 
template<class... LTags, class... RTags, typename std::enable_if< sizeof...(LTags)==sizeof...(RTags)>::type * = nullptr>
TUPLES_LIB_CONSTEXPR_CXX_14 bool tuples::operator> (TaggedTuple< LTags... > const &lhs, TaggedTuple< RTags... > const &rhs) noexcept(noexcept(rhs< lhs))
 
template<class... LTags, class... RTags, typename std::enable_if< sizeof...(LTags)==sizeof...(RTags)>::type * = nullptr>
TUPLES_LIB_CONSTEXPR_CXX_14 bool tuples::operator<= (TaggedTuple< LTags... > const &lhs, TaggedTuple< RTags... > const &rhs) noexcept(noexcept(rhs< lhs))
 
template<class... LTags, class... RTags, typename std::enable_if< sizeof...(LTags)==sizeof...(RTags)>::type * = nullptr>
TUPLES_LIB_CONSTEXPR_CXX_14 bool tuples::operator>= (TaggedTuple< LTags... > const &lhs, TaggedTuple< RTags... > const &rhs) noexcept(noexcept(lhs< rhs))
 
template<class... Tags, typename std::enable_if< tuples_detail::all< tuples_detail::is_swappable_with< tuples_detail::TaggedTupleLeaf< Tags >, tuples_detail::TaggedTupleLeaf< Tags >>::value... >::value >::type * = nullptr>
void tuples::swap (TaggedTuple< Tags... > &lhs, TaggedTuple< Tags... > &rhs) noexcept(tuples_detail::all< tuples_detail::is_nothrow_swappable_with< tuples_detail::TaggedTupleLeaf< Tags >, tuples_detail::TaggedTupleLeaf< Tags >>::value... >::value)
 
template<class... Tags>
std::ostreamtuples::operator<< (std::ostream &os, const TaggedTuple< Tags... > &t)
 Stream operator for TaggedTuple.
 
template<class Tag , class... Tags>
constexpr const Tag::type & tuples::get (const TaggedTuple< Tags... > &t) noexcept
 Retrieve the element of Tag in the TaggedTuple.
 
template<class Tag , class... Tags>
constexpr Tag::type & tuples::get (TaggedTuple< Tags... > &t) noexcept
 Retrieve the element of Tag in the TaggedTuple.
 
template<class Tag , class... Tags>
constexpr const Tag::type && tuples::get (const TaggedTuple< Tags... > &&t) noexcept
 Retrieve the element of Tag in the TaggedTuple.
 
template<class Tag , class... Tags>
constexpr Tag::type && tuples::get (TaggedTuple< Tags... > &&t) noexcept
 Retrieve the element of Tag in the TaggedTuple.
 

Detailed Description

Defines class tuples::TaggedTuple.