std::experimental::ranges::tagged (3) - Linux Manuals

std::experimental::ranges::tagged: std::experimental::ranges::tagged

NAME

std::experimental::ranges::tagged - std::experimental::ranges::tagged

Synopsis


Defined in header <experimental/ranges/utility>
template< class Base, TagSpecifier... Tags >
requires sizeof...(Tags) <= std::tuple_size<Base>::value (ranges TS)
struct tagged;


The class template tagged augments a tuple-like class type Base, which it publicly derives from, with a set of named accessors specified by the tag specifiers Tags.... The tags are applied in order: the i-th tag specifier in Tags... correspond to the i-th element of the tuple.
The tag specifiers in Tags... shall be unique. Otherwise, the behavior is undefined.
It is not possible to delete an instance of tagged through a pointer to any base other than Base.

Member functions


              construct a tagged object
constructor (public member function)
              assigns a tagged object
operator= (public member function)
              swaps the contents of two tagged objects
swap (public member function)


Named element accessors


For the N-th tag specifier in Tags... whose corresponding element name is name, tagged provides accessors named name as follows:


  constexpr decltype(auto) name() & { return std::get<N>(*this); }
  constexpr decltype(auto) name() const & { return std::get<N>(*this); }
  constexpr decltype(auto) name() && { return std::get<N>(std::move(*this)); }

Non-member functions


                             specializes swap for tagged objects
ranges::swap(ranges::tagged) (function)


Tuple-like access


                                                      obtains the size of a tagged
std::tuple_size<std::experimental::ranges::tagged> (class template specialization)
                                                      obtains the types of the elements of a tagged
std::tuple_element<std::experimental::ranges::tagged> (class template specialization)

See also


                  specifies that a type is a tag specifier
TagSpecifier (concept)
                  alias template for a tagged std::pair
tagged_pair (alias template)
                  convenience function for creating a tagged_pair
make_tagged_pair (function template)
                  alias template for a tagged std::tuple
tagged_tuple (alias template)
                  convenience function for creating a tagged_tuple
make_tagged_tuple (function template)


in
in1
in2
out
out1 tag specifiers for use with ranges::tagged
out2 (class)
fun
min
max
begin
end