/*!<- Copyright (c) 2016 Barrett Adair Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) ->*/ //[ remove_member_pointer #include #include namespace ct = callable_traits; struct foo; template void test() { using U = ct::remove_member_pointer; static_assert(std::is_same{}, ""); } int main() { { using T = int(foo::*)(int) const; using expect = int(int) const; test(); } { using T = int foo::*; using expect = int; test(); } { using T = int(int); test(); } { using T = int(*)(int); test(); } { using T = int(&)(int); test(); } } //]