8 General utilities library [utilities]

8.5 Tagged tuple-like types [taggedtup]

8.5.4 Alias template tagged_pair [tagged.pairs] Tagged pair creation functions [tagged.pairs.creation]

// defined in header <experimental/ranges/utility> namespace std { namespace experimental { namespace ranges { inline namespace v1 { template <TagSpecifier Tag1, TagSpecifier Tag2, class T1, class T2> constexpr see below make_tagged_pair(T1&& x, T2&& y); }}}}

Let P be the type of make_pair(std::forward<T1>(x), std::forward<T2>(y)). Then the return type is tagged<P, Tag1, Tag2>.

Returns: {std::forward<T1>(x), std::forward<T2>(y)}.

Example: In place of:

  return tagged_pair<tag::min(int), tag::max(double)>(5, 3.1415926);   // explicit types

a C++ program may contain:

  return make_tagged_pair<tag::min, tag::max>(5, 3.1415926);           // types are deduced

 — end example ]