Horizon
Loading...
Searching...
No Matches
swap.hpp
Go to the documentation of this file.
1
2// Range v3 library
3//
4// Copyright Eric Niebler 2013-present
5//
6// Use, modification and distribution is subject to the
7// Boost Software License, Version 1.0. (See accompanying
8// file LICENSE_1_0.txt or copy at
9// http://www.boost.org/LICENSE_1_0.txt)
10//
11// Project home: https://github.com/ericniebler/range-v3
12//
13// The implementation of swap (see below) has been adapted from libc++
14// (http://libcxx.llvm.org).
15
16#ifndef RANGES_V3_UTILITY_SWAP_HPP
17#define RANGES_V3_UTILITY_SWAP_HPP
18
19#include <concepts/swap.hpp>
20
22
23#include <range/v3/utility/static_const.hpp>
24
25#include <range/v3/detail/prologue.hpp>
26
27namespace ranges
28{
29 template<typename T>
30 using is_swappable = concepts::is_swappable<T>;
31
32 template<typename T>
33 using is_nothrow_swappable = concepts::is_nothrow_swappable<T>;
34
35 template<typename T, typename U>
36 using is_swappable_with = concepts::is_swappable_with<T, U>;
37
38 template<typename T, typename U>
39 using is_nothrow_swappable_with = concepts::is_nothrow_swappable_with<T, U>;
40
41 using concepts::exchange;
42
45 RANGES_DEFINE_CPO(uncvref_t<decltype(concepts::swap)>, swap)
46
47 namespace cpp20
48 {
49 using ranges::swap;
50 }
51} // namespace ranges
52
53#include <range/v3/detail/epilogue.hpp>
54
55#endif
Definition swap.hpp:333
Definition swap.hpp:313
Definition swap.hpp:327