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

    <tr>
        <th>Summary</th>
        <td>
            [clang] error: constexpr variable must be initialized by a constant expression
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          itou-fj
      </td>
    </tr>
</table>

<pre>
    When I compiled this code with clang, it returned a compilation error.
Other compilers (gcc, msvc, etc.) can compile without errors.


[Compiler Explorer](https://godbolt.org/z/ErhdPo7Me)

Code:
```
class Apple {
 public:
  constexpr Apple() {}
  constexpr operator int() { return 555; }
};

class Meal {
 public:
  //constexpr Meal(Apple apple) {} // OK
  constexpr Meal(int apple) {}     // NG
};

class Dinner : Meal {
 public:
  Apple apple_;
 constexpr Dinner() : apple_(), Meal(apple_) {}
};

int main() {
 constexpr Dinner my_dinner;
  return 0;
}
```


Error Message:

```
<source>:18:39: warning: field 'apple_' is uninitialized when used here [-Wuninitialized]
   18 |   constexpr Dinner() : apple_(), Meal(apple_) {}
      | ^
<source>:22:20: error: constexpr variable 'my_dinner' must be initialized by a constant expression
   22 |   constexpr Dinner my_dinner;
      |                    ^~~~~~~~~
<source>:18:39: note: member call on object outside its lifetime is not allowed in a constant expression
   18 |   constexpr Dinner() : apple_(), Meal(apple_) {}
 |                                       ^~~~~~
<source>:22:20: note: in call to 'Dinner()'
   22 |   constexpr Dinner my_dinner;
      | ^~~~~~~~~
1 warning and 1 error generated.
Compiler returned: 1

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU2PozgQ_TXOpdQRlEMTDhzyuVqtemdvcxwZXAkeGTuyTff0HPa3rxwgoTeZbq22UQTEqo_36lVRwnt1NEQly9Ys285EFxrrShVs93D4PqusfC2_NmTgd6hte1KaJIRGeaitJHhRoYFaC3NkuAEVwFHonCEJYjAXQVkD5Jx1c5ZsWbL6EhpyYzDngeHyWNfRv_XP5yeFes6wgFqY0e6cyXahj-SHUG_u2XozxITdj5O2jhzLtgyXTQgnz_iK4Z7h_mhlZXWYW3dkuP_JcL9zjfzL5k_EsJhG3FhJ0a0_ekyG3_lvrYX3sDqdNAHL1_0hnLpKq_riA1Bb4wP9OLnelOEy8ooO-fbWxp7IiWAdKBOupkNNIcsyxtdw8YwvfD0F3IN6IqHfw9SX4Zo12jNc9lxED3PEOBjDlz9u0Q5-yoQbr3gNnn_-9j7arTKGHDC--hD4BOG3S6wJoD7UWDi-Gk3PB7GvBsTj8VshbgFGZq1QZqLa_ZTQvn6TffILrFG15Br0kultK03vu9jd8ETei-Ok9-668Y23nauJ8R3jq3TJ-IoXkfaLcEaZY3w9KNISGOYj5xyUh84oo4ISWv0kCS9xujtPEhpyBCxbP3x9YxGnaCAF6RJYvgH4tLJD3yz5Bli2u8sMMd6SGPk8_PHlmv1ZOCWqOIWYX2XAHNrOB6gIplSr1_N3yfggTIDoT94ray5QEH9B767EI_I7F8t2fw_XR3IZG6LU0FJbxQ-j0BqsAVt9pzqA7YJXkkAFD1odKKiWoobGBhBa2xeSoMwHtD5ftV_QfqcSH2k7lkGZvgTBRkmnMBnm_1OoG1XScVhAGAlp32BwJBM_xCTn4yIY9sq43SLO9O5szmTJZcELMaMyzTmmybLIi1lTFmKRyDRb8Cyt0wrzRSGSJK1zfsgLnhc4UyUmuEhTTFKOmC3njwesKp7yLF3iYYE5WyTUCqXnWj-3cX3NlPcdlWn6WDwWMy0q0v68xhGHlYxxo7syOjxU3dGzRaKVD_4aIqigz7u_98i2787Yf5mpWed0-a_Vq0LTVfPatgz3EcLweDg5G5ud4f5MyTPcD6yeS_wnAAD__-P-h7M">