1 /*<- 2 Copyright Barrett Adair 2016-2017 3 Distributed 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 main()9int main(){ return 0; } 10 #else 11 12 //[ remove_member_volatile 13 #include <type_traits> 14 #include <boost/callable_traits/remove_member_volatile.hpp> 15 16 namespace ct = boost::callable_traits; 17 18 struct foo {}; 19 main()20int main() { 21 22 { 23 using pmf = int(foo::*)() const volatile; 24 using expect = int(foo::*)() const; 25 using test = ct::remove_member_volatile_t<pmf>; 26 static_assert(std::is_same<test, expect>::value, ""); 27 } { 28 using pmf = int(foo::*)() volatile &&; 29 using expect = int(foo::*)() &&; 30 using test = ct::remove_member_volatile_t<pmf>; 31 static_assert(std::is_same<test, expect>::value, ""); 32 } { 33 using pmf = int(foo::*)() volatile &; 34 using expect = int(foo::*)() &; 35 using test = ct::remove_member_volatile_t<pmf>; 36 static_assert(std::is_same<test, expect>::value, ""); 37 } { 38 using f = int() const volatile; 39 using expect = int() const; 40 using test = ct::remove_member_volatile_t<f>; 41 static_assert(std::is_same<test, expect>::value, ""); 42 } 43 } 44 //] 45 #endif //#ifdef BOOST_CLBL_TRTS_DISABLE_REFERENCE_QUALIFIERS 46