/*<- 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) ->*/ #include #include "test.hpp" struct foo; template struct is_substitution_failure_apply_member_pointer { template static auto test(...) -> std::true_type; template::type* = nullptr> static auto test(int) -> std::false_type; static constexpr bool value = decltype(test(0))::value; }; int main() { CT_ASSERT(is_substitution_failure_apply_member_pointer::value); CT_ASSERT(is_substitution_failure_apply_member_pointer::value); CT_ASSERT(is_substitution_failure_apply_member_pointer::value); }