]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/pfr/detail/rvalue_t.hpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / boost / pfr / detail / rvalue_t.hpp
CommitLineData
1e59de90 1// Copyright (c) 2016-2022 Antony Polukhin
20effc67
TL
2//
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#ifndef BOOST_PFR_DETAIL_RVALUE_T_HPP
7#define BOOST_PFR_DETAIL_RVALUE_T_HPP
8#pragma once
9
10#include <type_traits>
11#include <utility> // std::enable_if_t
12
13// This header provides aliases rvalue_t and lvalue_t.
14//
15// Usage: template <class T> void foo(rvalue<T> rvalue);
16//
17// Those are useful for
18// * better type safety - you can validate at compile time that only rvalue reference is passed into the function
19// * documentation and readability - rvalue_t<T> is much better than T&&+SFINAE
20
21namespace boost { namespace pfr { namespace detail {
22
23/// Binds to rvalues only, no copying allowed.
24template <class T
25#ifdef BOOST_PFR_DETAIL_STRICT_RVALUE_TESTING
26 , class = std::enable_if_t<std::is_rvalue_reference<T&&>::value>
27#endif
28>
29using rvalue_t = T&&;
30
31/// Binds to mutable lvalues only
32
33}}} // namespace boost::pfr::detail
34
35#endif // BOOST_PFR_DETAIL_RVALUE_T_HPP