On 08/12/2022 19:45, 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 <initializer_list>
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);
};
struct Sequence { Sequence(std::initializer_list<OUString>); };
Sequence f() { return {""}; }

$ g++ -fsyntax-only test.cc
test.cc: In function ‘Sequence f()’:
test.cc:8:26: error: no matching function for call to ‘OUString::OUString(const 
char* const)’
    8 | Sequence f() { return {""}; }
      |                          ^
test.cc:5:26: note: candidate: ‘template<class T> OUString::OUString(T&, typename 
ConstCharArrayDetector<T>::Type)’
    5 |     template<typename T> OUString(T &, typename 
ConstCharArrayDetector<T>::Type = 0);
      |                          ^~~~~~~~
test.cc:5:26: note:   template argument deduction/substitution failed:
test.cc: In substitution of ‘template<class T> OUString::OUString(T&, typename 
ConstCharArrayDetector<T>::Type) [with T = const char* const]’:
test.cc:8:26:   required from here
test.cc:5:26: error: invalid use of incomplete type ‘struct 
ConstCharArrayDetector<const char* const>’
test.cc:2:27: note: declaration of ‘struct ConstCharArrayDetector<const char* 
const>’
    2 | template<typename> struct ConstCharArrayDetector;
      |                           ^~~~~~~~~~~~~~~~~~~~~~
test.cc:4:8: note: candidate: ‘constexpr OUString::OUString(const OUString&)’
    4 | struct OUString {
      |        ^~~~~~~~
test.cc:4:8: note:   no known conversion for argument 1 from ‘const char* const’ to 
‘const OUString&’
test.cc:4:8: note: candidate: ‘constexpr OUString::OUString(OUString&&)’
test.cc:4:8: note:   no known conversion for argument 1 from ‘const char* const’ to 
‘OUString&&’
test.cc:8:26: error: conversion from ‘const char* const’ to non-scalar type 
‘const OUString’ requested
    8 | Sequence f() { return {""}; }
      |                          ^

Reply via email to