File tree Expand file tree Collapse file tree 3 files changed +9
-5
lines changed
meta/meta.unary/meta.unary.prop
tuple/tuple.tuple/tuple.cnstr Expand file tree Collapse file tree 3 files changed +9
-5
lines changed Original file line number Diff line number Diff line change @@ -509,8 +509,8 @@ struct _Lazy : _Func<_Args...> {};
509
509
510
510
// Member detector base
511
511
512
- template <template <class ...> class _Templ , class ..._Args>
513
- true_type __sfinae_test_impl (_FirstType< int , _Templ<_Args...> > );
512
+ template <template <class ...> class _Templ , class ..._Args, class = _Templ<_Args...> >
513
+ true_type __sfinae_test_impl (int );
514
514
template <template <class ...> class , class ...>
515
515
false_type __sfinae_test_impl (...);
516
516
Original file line number Diff line number Diff line change @@ -244,13 +244,17 @@ int main(int, char**)
244
244
245
245
test_is_constructible<const int &, ExplicitTo<int &>&>();
246
246
test_is_constructible<const int &, ExplicitTo<int &>>();
247
- test_is_constructible<int &, ExplicitTo<int &>>();
248
- test_is_constructible<const int &, ExplicitTo<int &&>>();
247
+
249
248
250
249
// Binding through reference-compatible type is required to perform
251
250
// direct-initialization as described in [over.match.ref] p. 1 b. 1:
251
+ //
252
+ // But the rvalue to lvalue reference binding isn't allowed according to
253
+ // [over.match.ref] despite Clang accepting it.
252
254
test_is_constructible<int &, ExplicitTo<int &>>();
255
+ #ifndef TEST_COMPILER_GCC
253
256
test_is_constructible<const int &, ExplicitTo<int &&>>();
257
+ #endif
254
258
255
259
static_assert (std::is_constructible<int &&, ExplicitTo<int &&>>::value, " " );
256
260
#ifdef __clang__
Original file line number Diff line number Diff line change 13
13
// GCC's implementation of class template deduction is still immature and runs
14
14
// into issues with libc++. However GCC accepts this code when compiling
15
15
// against libstdc++.
16
- // XFAIL: gcc
16
+ // XFAIL: gcc-5, gcc-6, gcc-7
17
17
18
18
// <tuple>
19
19
You can’t perform that action at this time.
0 commit comments