I think this started working when I made std::reference_wrapper use std::__invoke, so we can uncomment the tests.
* testsuite/20_util/reference_wrapper/invoke.cc: Uncomment tests that no longer fail. Tested powerpc64le-linux, committed to trunk.
commit fef7c523742f474bb3322bd58b7be27dd088ed7d Author: Jonathan Wakely <jwak...@redhat.com> Date: Mon Apr 3 16:55:31 2017 +0100 Uncomment std::reference_wrapper tests that no longer fail * testsuite/20_util/reference_wrapper/invoke.cc: Uncomment tests that no longer fail. diff --git a/libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc b/libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc index 8fd5470..c4a4537 100644 --- a/libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc +++ b/libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc @@ -73,8 +73,7 @@ void test01() int (::X::* p_foo_c)(float) const = &::X::foo_c; int (::X::* p_foo_v)(float) volatile = &::X::foo_v; int (::X::* p_foo_cv)(float) const volatile = &::X::foo_cv; - int (::X::* p_foo_varargs)(float, ...) __attribute__((unused)) - = &::X::foo_varargs; + int (::X::* p_foo_varargs)(float, ...) = &::X::foo_varargs; int ::X::* p_bar = &::X::bar; const float pi = 3.14; @@ -96,10 +95,10 @@ void test01() VERIFY(ref(p_foo_v)(xp, pi) == 3); VERIFY(ref(p_foo_cv)(x, pi) == 3); VERIFY(ref(p_foo_cv)(xp, pi) == 3); - // VERIFY(ref(p_foo_varargs)(x, pi) == 3); - // VERIFY(ref(p_foo_varargs)(xp, pi, 1, 1) == 3); - // VERIFY(ref(p_foo_varargs)(x, pi, 1, 1) == 3); - // VERIFY(ref(p_foo_varargs)(xp, pi) == 3); + VERIFY(ref(p_foo_varargs)(x, pi) == 3); + VERIFY(ref(p_foo_varargs)(xp, pi, 1, 1) == 3); + VERIFY(ref(p_foo_varargs)(x, pi, 1, 1) == 3); + VERIFY(ref(p_foo_varargs)(xp, pi) == 3); // Member data pointers VERIFY(ref(p_bar)(x) == 17);