Range-v3
Range algorithms, views, and actions for the Standard Library
tagged_pair.hpp File Reference

Classes

class  ranges::v3::tagged< Base, Tags >
 
struct  std::tuple_element< N, ::ranges::v3::tagged< Untagged, Tags... > >
 
struct  std::tuple_size< ::ranges::v3::tagged< Untagged, Tags... > >
 

Macros

#define RANGES_DEFINE_TAG_SPECIFIER(NAME)
 

Typedefs

template<typename F , typename S >
using ranges::v3::tagged_pair = tagged< std::pair< detail::tag_elem< F >, detail::tag_elem< S > >, detail::tag_spec< F >, detail::tag_spec< S > >
 

Functions

template<std::size_t I, typename Base , typename... Tags>
auto ranges::v3::get (tagged< Base, Tags... > &t) noexcept(noexcept(decltype(ranges::detail::adl_get< I >(static_cast< Base &>(t)))(ranges::detail::adl_get< I >(static_cast< Base &>(t))))) -> decltype(ranges::detail::adl_get< I >(static_cast< Base &>(t)))
 
template<std::size_t I, typename Base , typename... Tags>
auto ranges::v3::get (tagged< Base, Tags... > const &t) noexcept(noexcept(decltype(ranges::detail::adl_get< I >(static_cast< Base const &>(t)))(ranges::detail::adl_get< I >(static_cast< Base const &>(t))))) -> decltype(ranges::detail::adl_get< I >(static_cast< Base const &>(t)))
 
template<std::size_t I, typename Base , typename... Tags>
auto ranges::v3::get (tagged< Base, Tags... > &&t) noexcept(noexcept(decltype(ranges::detail::adl_get< I >(static_cast< Base &&>(t)))(ranges::detail::adl_get< I >(static_cast< Base &&>(t))))) -> decltype(ranges::detail::adl_get< I >(static_cast< Base &&>(t)))
 
template<std::size_t I, typename Base , typename... Tags>
void ranges::v3::get (tagged< Base, Tags... > const &&)=delete
 
template<typename Tag1 , typename Tag2 , typename T1 , typename T2 , typename R = tagged_pair<Tag1(bind_element_t<T1>), Tag2(bind_element_t<T2>)>>
constexpr R ranges::v3::make_tagged_pair (T1 &&t1, T2 &&t2) noexcept(std::is_nothrow_constructible< R, T1, T2 >::value)