#include #include #include #include #include "test.hpp" struct foo; int main() { { using f = void(int, int, int, int, int); using test = clear_args_t; using expect = void(); CT_ASSERT(std::is_same::value); } #ifndef CALLABLE_TRAITS_DISABLE_ABOMINABLE_FUNCTIONS { using f = void(int, int, int, int, int) const; using test = clear_args_t; using expect = void() const; CT_ASSERT(std::is_same::value); } #endif // #ifndef CALLABLE_TRAITS_DISABLE_ABOMINABLE_FUNCTIONS { using f = void(*)(int, int, int, int, int); using test = clear_args_t; using expect = void(*)(); CT_ASSERT(std::is_same::value); } { using f = void(&)(int, int, int, int, int); using test = clear_args_t; using expect = void(&)(); CT_ASSERT(std::is_same::value); } { using f = void(&)(int, int, int, int, int); using test = clear_args_t; using expect = void(&)(); CT_ASSERT(std::is_same::value); } { using f = void(foo::*)(int, int, int, int, int); using test = clear_args_t; using expect = void(foo::*)(); CT_ASSERT(std::is_same::value); } { using f = void(foo::*)(int, int, int, int, int) volatile; using test = clear_args_t; using expect = void(foo::*)() volatile; CT_ASSERT(std::is_same::value); } }