Experimentelles Bibliotheks-Header <experimental/ranges/utility>
Von cppreference.com
< cpp | header | experimental
Dieser Header ist Teil der ranges Bibliothek.
Inhalt |
[bearbeiten] Utility-Komponenten
| Definiert im Namespace
std::experimental::ranges | |
| tauscht die Werte zweier Objekte (customization point object) | |
| ersetzt das Argument durch einen neuen Wert und gibt seinen vorherigen Wert zurück (Funktions-Template) | |
[bearbeiten] Tag-Konzepte
| Definiert im Namespace
std::experimental::ranges | |
| spezifiziert, dass ein Typ ein Tag-Specifier ist (concept) | |
| spezifiziert, dass ein Typ einen Tag-Specifier und seinen Elementtyp repräsentiert (concept) | |
[bearbeiten] Getaggte Paare
| Definiert im Namespace
std::experimental::ranges | |
| erweitert einen Tupel-ähnlichen Typ um benannte Accessoren (class template) | |
| Alias-Vorlage für ein getaggtes std::pair (alias template) | |
Komfortfunktion zum Erstellen eines tagged_pair(function template) | |
[bearbeiten] Synopsis
namespace std { namespace experimental { namespace ranges { inline namespace v1 { namespace { constexpr /* unspecified */ swap = /* unspecified */; } template<MoveConstructible T, class U = T> requires Assignable<T&, U> constexpr T exchange(T& obj, U&& new_val) noexcept(/* see definition */); template <class T> concept bool TagSpecifier = /* see definition */; template <class F> concept bool TaggedType = /* see definition */; template <class Base, TagSpecifier... Tags> requires sizeof...(Tags) <= std::tuple_size<Base>::value struct tagged; template <TaggedType T1, TaggedType T2> using tagged_pair = /* see definition */; template <TagSpecifier Tag1, TagSpecifier Tag2, class T1, class T2> constexpr /* see definition */ make_tagged_pair(T1&& x, T2&& y); }}}} namespace std { template <class Base, class... Tags> struct tuple_size<experimental::ranges::tagged<Base, Tags...>>; template <size_t N, class Base, class... Tags> struct tuple_element<N, experimental::ranges::tagged<Base, Tags...>>; }