实验性库头文件 <experimental/ranges/utility>

< cpp‎ | header‎ | experimental
 
 
 
实验性库头文件
文件系统 TS
<experimental/filesystem>
并行 TS (v1, v2)
库基础 TS (v1, v2, v3)
并发 TS
范围 TS
协程 TS
<experimental/coroutine>
网络 TS
反射 TS
<experimental/reflect>
 

此头文件是范围库的一部分。

工具组件

定义于命名空间 std::experimental::ranges
交换两个对象的值
(定制点对象)
以新值替换实参并返回其先前的值
(函数模板)

标签概念

定义于命名空间 std::experimental::ranges
指定类型为标签说明符
(概念)
指定类型表示一个标签说明符及其元素类型
(概念)

带标签对偶

定义于命名空间 std::experimental::ranges
为元组式类型增加具名访问器
(类模板)
有标签 std::pair 的别名模版
(别名模板)
用于创建 tagged_pair 的便利函数
(函数模板)

概要

namespace std { namespace experimental { namespace ranges { inline namespace v1 {
 
namespace {
  constexpr /* 未指明 */ swap = /* 未指明 */;
} 
 
template<MoveConstructible T, class U = T>
  requires Assignable<T&, U>
constexpr T exchange(T& obj, U&& new_val) noexcept(/* 见定义 */);
 
template <class T>
concept bool TagSpecifier = /* 见定义 */;
 
template <class F>
concept bool TaggedType = /* 见定义 */;
 
template <class Base, TagSpecifier... Tags>
  requires sizeof...(Tags) <= std::tuple_size<Base>::value
struct tagged;
 
template <TaggedType T1, TaggedType T2>
using tagged_pair = /* 见定义 */;
 
template <TagSpecifier Tag1, TagSpecifier Tag2, class T1, class T2>
constexpr /* 见定义 */ 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...>>;
 
}