<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/121331>121331</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang does not realize erroneous overload with inherited constructor
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          wangbo15
      </td>
    </tr>
</table>

<pre>
    The following code is rejected by GCC, MSVC, and EDG but accepted by Clang:

```c++
struct C
{
    C(int = 1){}
};

struct D
{
  D (C);
};

struct A : D
{
  A (const C & n) : D (C{100}) {}
  using D:: D;
};

int main(){
    A a=C{};
}
```

As the diagnostic shows, the user-defined ctor `A(const C & n)` of class `A` has the same parameter list as the inherited ctor, which leads to ambiguity:

```c++
<source>: In function 'int main()':
<source>:18:9: error: conversion from 'C' to 'A' is ambiguous
   18 |     A a=C{};
      |         ^~~
<source>:18:9: note: there are 6 candidates
<source>:8:3: note: candidate 1: 'D::D(C)'
    8 | D (C);
      |   ^
<source>:14:13: note: inherited here
   14 |   using D:: D;
      |             ^
<source>:13:3: note: candidate 2: 'A::A(const C&)'
   13 |   A (const C & n) : D (C{100}) {}
```

Please see https://godbolt.org/z/vG9cqvMbc
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVU-P46gT_TTkUuqWKWI7Pvjgtjut32Gkn7SrvWOo2Kwc6AWcqOcwn32F7elJ_5vDSigQqPeq3uOPZQhmsEQ1yx9Y3u3kHEfn66u0Q-94vuudfqn_HAlObprc1dgBlNMEJoCnv0lF0tC_wFPbMmzh2x9_Lb20Gh67J-jnCFIpet7C2knagYmGZUsrsrUphg-pZU2IflYR2rRapgkAgJbhwdgITHTAGVZppeyWkI6Jh5VsQ3Y3yA4YHtoEWIM-RjfARPMG0ySMcjZEaIFhAZZhtUatbOUDz7JElaZ_FgIwh2RNl7QtjB8yJgFnaSzDwyZhFdeAZKJrN6pX2I07K74JEEcCbeRgXYhGQRjdNSS30_wcyN9pOhlLGlR0HliRNZ9oYUUG7gRqkiGsMUUGo1zZgzwTPEsvzxTJw2RChG3J2JG8iRt7SnsdjRphIqkDRAfy3JthNvHld_vLRBvc7BUx8ZiM-p-F02xVNM4Cw_KdSVhuXG9R_MBEUyU4ee98GihnL-RDojl5d05cLcMy1cWwbNLQhK1EN4fVe34AVrbwxS4s868Byzh__PHjd-VYFyn1cSRPID1BAUpabbSMFD4iE1DcAl-Dgae_DMvtRHU_TzKWW2lr7e-O-G3NLH_8pNZ9-nmT89fGpqo3Z_YbyafH-qMz8GU-8bVE3CQ2K_vNYWVY3GrlYkv23y7nu4v0_4lkIAhEMMb4HFJ2PDI8Dk73bor3zg8Mj98ZHi9Plfrn8q1XO10LXYlK7qjmpcjznFdlsRtrqjLOFWJf9oUoD0WVUZbzgk5UFXvU-52pMcM9R5Fl1b7gxX2mM8QeecFR52JfsH1GZ2mm-2m6nFPunQlhppojF4LvJtnTFJbXGVEtzydieqh9nQB3_TwEts_STQ2_KKKJE9XLawvaUUjugyc5me-0XBpLbg7gLuQnJzVcTRxvb3iyOD2Qzu9mP9XvfDJxnPt75c4Mjynl1t09e5e-CAyPi4TA8LipuNT4bwAAAP__5gbGRg">