[libcxx-commits] [libcxx] r371880 - Fix various test failures with GCC
Eric Fiselier via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Sep 13 11:40:46 PDT 2019
Author: ericwf
Date: Fri Sep 13 11:40:46 2019
New Revision: 371880
URL: http://llvm.org/viewvc/llvm-project?rev=371880&view=rev
Log:
Fix various test failures with GCC
Modified:
libcxx/trunk/include/type_traits
libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp
libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp
Modified: libcxx/trunk/include/type_traits
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/type_traits?rev=371880&r1=371879&r2=371880&view=diff
==============================================================================
--- libcxx/trunk/include/type_traits (original)
+++ libcxx/trunk/include/type_traits Fri Sep 13 11:40:46 2019
@@ -509,8 +509,8 @@ struct _Lazy : _Func<_Args...> {};
// Member detector base
-template <template <class...> class _Templ, class ..._Args>
-true_type __sfinae_test_impl(_FirstType<int, _Templ<_Args...> >);
+template <template <class...> class _Templ, class ..._Args, class = _Templ<_Args...>>
+true_type __sfinae_test_impl(int);
template <template <class...> class, class ...>
false_type __sfinae_test_impl(...);
Modified: libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp?rev=371880&r1=371879&r2=371880&view=diff
==============================================================================
--- libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp (original)
+++ libcxx/trunk/test/std/utilities/meta/meta.unary/meta.unary.prop/is_constructible.pass.cpp Fri Sep 13 11:40:46 2019
@@ -244,13 +244,17 @@ int main(int, char**)
test_is_constructible<const int&, ExplicitTo<int&>&>();
test_is_constructible<const int&, ExplicitTo<int&>>();
- test_is_constructible<int&, ExplicitTo<int&>>();
- test_is_constructible<const int&, ExplicitTo<int&&>>();
+
// Binding through reference-compatible type is required to perform
// direct-initialization as described in [over.match.ref] p. 1 b. 1:
+ //
+ // But the rvalue to lvalue reference binding isn't allowed according to
+ // [over.match.ref] despite Clang accepting it.
test_is_constructible<int&, ExplicitTo<int&>>();
+#ifndef TEST_COMPILER_GCC
test_is_constructible<const int&, ExplicitTo<int&&>>();
+#endif
static_assert(std::is_constructible<int&&, ExplicitTo<int&&>>::value, "");
#ifdef __clang__
Modified: libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp?rev=371880&r1=371879&r2=371880&view=diff
==============================================================================
--- libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp (original)
+++ libcxx/trunk/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/deduct.pass.cpp Fri Sep 13 11:40:46 2019
@@ -13,7 +13,7 @@
// GCC's implementation of class template deduction is still immature and runs
// into issues with libc++. However GCC accepts this code when compiling
// against libstdc++.
-// XFAIL: gcc
+// XFAIL: gcc-5, gcc-6, gcc-7
// <tuple>
More information about the libcxx-commits
mailing list