Fix PR27684 - std::tuple no longer accepts reference to incomplete type in some cases.
Libc++ has to deduce the 'allocator_arg_t' parameter as 'AllocArgT' for the following constructor: template <class Alloc> tuple(allocator_arg_t, Alloc const&) Previously libc++ has tried to support tags derived from 'allocator_arg_t' by using 'is_base_of<AllocArgT, allocator_arg_t>'. However this breaks whenever a 2-tuple contains a reference to an incomplete type as its first parameter. See https://llvm.org/bugs/show_bug.cgi?id=27684 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273334 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -662,7 +662,7 @@ public:
|
||||
|
||||
template <class _AllocArgT, class _Alloc, bool _Dummy = true, class = typename enable_if<
|
||||
__lazy_and<
|
||||
is_base_of<allocator_arg_t, _AllocArgT>,
|
||||
is_same<allocator_arg_t, _AllocArgT>,
|
||||
__lazy_all<__dependent_type<is_default_constructible<_Tp>, _Dummy>...>
|
||||
>::value
|
||||
>::type>
|
||||
|
||||
Reference in New Issue
Block a user