/* Copyright Barrett Adair 2016-2017 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt) */ #include #include #include #include #include "test.hpp" struct foo{}; int main() { { using f = char(foo::*)(foo*, int); using l = char(foo::*)(foo*, int) LREF; using r = char(foo::*)(foo*, int) RREF; using c = char(foo::*)(foo*, int) const; using cl = char(foo::*)(foo*, int) const LREF; using cr = char(foo::*)(foo*, int) const RREF; using v = char(foo::*)(foo*, int) volatile; using vl = char(foo::*)(foo*, int) volatile LREF; using vr = char(foo::*)(foo*, int) volatile RREF; using cv = char(foo::*)(foo*, int) const volatile; using cvl = char(foo::*)(foo*, int) const volatile LREF; using cvr = char(foo::*)(foo*, int) const volatile RREF; CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); } #ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS { using f = foo&&(); using l = foo&&() LREF; using r = foo&&() RREF; using c = foo&&() const; using cl = foo&&() const LREF; using cr = foo&&() const RREF; using v = foo&&() volatile; using vl = foo&&() volatile LREF; using vr = foo&&() volatile RREF; using cv = foo&&() const volatile; using cvl = foo&&() const volatile LREF; using cvr = foo&&() const volatile RREF; CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); CT_ASSERT(std::is_same{}); } #endif //#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS }