]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/callable_traits/example/add_member_volatile.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / callable_traits / example / add_member_volatile.cpp
CommitLineData
b32b8144
FG
1/*<-
2Copyright Barrett Adair 2016-2017
3Distributed under the Boost Software License, Version 1.0.
4(See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
5->*/
6
7#include <boost/callable_traits/detail/config.hpp>
8#ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS
9int main(){ return 0; }
10#else
11
12//[ add_member_volatile
13#include <type_traits>
14#include <boost/callable_traits/add_member_volatile.hpp>
15
16namespace ct = boost::callable_traits;
17
18struct foo {};
19
20int main() {
21
22 {
23 using pmf = void(foo::*)();
24 using expect = void(foo::*)() volatile;
25 using test = ct::add_member_volatile_t<pmf>;
26 static_assert(std::is_same<test, expect>::value, "");
27 } {
28 // add_member_volatile_t doesn't change anything when
29 // the function type is already volatile.
30 using pmf = void(foo::*)() volatile &&;
31 using expect = void(foo::*)() volatile &&;
32 using test = ct::add_member_volatile_t<pmf>;
33 static_assert(std::is_same<test, expect>::value, "");
34 } {
35 using pmf = void(foo::*)() const &;
36 using expect = void(foo::*)() const volatile &;
37 using test = ct::add_member_volatile_t<pmf>;
38 static_assert(std::is_same<test, expect>::value, "");
39 } {
40 // add_member_volatile_t can also be used with "abominable"
41 // function types.
42 using f = void();
43 using expect = void() volatile;
44 using test = ct::add_member_volatile_t<f>;
45 static_assert(std::is_same<test, expect>::value, "");
46 }
47}
48
49//]
50#endif //#ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS