On 12/8/22 19:41, Jason Merrill via Gcc-patches wrote:
Tested x86_64-pc-linux-gnu, applying to trunk.

Bisecting shows this started to break

$ cat test.cc
#include <vector>
template<typename> struct ConstCharArrayDetector;
template<int N> struct ConstCharArrayDetector<char const[N]> { using Type = 
int; };
struct OUString {
    template<typename T> OUString(T &, typename ConstCharArrayDetector<T>::Type 
= 0);
};
std::vector<OUString> f() { return {""}; }

$ g++ -fsyntax-only test.cc
In file included from .../include/c++/13.0.0/vector:65,
                 from test.cc:1:
.../include/c++/13.0.0/bits/stl_uninitialized.h: In instantiation of ‘constexpr 
bool std::__check_constructible() [with _ValueType = OUString; _Tp = const char* 
const&]’:
.../include/c++/13.0.0/bits/stl_uninitialized.h:182:4:   required from 
‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, 
_ForwardIterator) [with _InputIterator = const char* const*; _ForwardIterator = 
OUString*]’
.../include/c++/13.0.0/bits/stl_uninitialized.h:373:37:   required from ‘_ForwardIterator 
std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, 
allocator<_Tp>&) [with _InputIterator = const char* const*; _ForwardIterator = 
OUString*; _Tp = OUString]’
.../include/c++/13.0.0/bits/stl_vector.h:1690:33:   required from ‘void std::vector<_Tp, 
_Alloc>::_M_range_initialize(_ForwardIterator, _ForwardIterator, 
std::forward_iterator_tag) [with _ForwardIterator = const char* const*; _Tp = OUString; 
_Alloc = std::allocator<OUString>]’
.../include/c++/13.0.0/bits/stl_vector.h:706:23:   required from ‘std::vector<_Tp, 
_Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&) [with _InputIterator = const 
char* const*; <template-parameter-2-2> = void; _Tp = OUString; _Alloc = 
std::allocator<OUString>; allocator_type = std::allocator<OUString>]’
test.cc:7:39:   required from here
.../include/c++/13.0.0/bits/stl_uninitialized.h:90:56: error: static assertion 
failed: result type must be constructible from input type
   90 |       static_assert(is_constructible<_ValueType, _Tp>::value,
      |                                                        ^~~~~
.../include/c++/13.0.0/bits/stl_uninitialized.h:90:56: note: 
‘std::integral_constant<bool, false>::value’ evaluates to false

Reply via email to