https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117501
Bug ID: 117501
Summary: Consteval costructor does not initialize the variable
Product: gcc
Version: 14.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: intkecsk at yandex dot ru
Target Milestone: ---
See: https://godbolt.org/z/9jvYTfYE4
```
struct QQQ {
consteval QQQ(std::string_view d): data(d) {}
std::string_view data;
};
void sink(const QQQ&);
void f() {
QQQ q("dogsdogsdogs");
sink(q);
}
```
This code is accepted with warnings
```
<source>: In function 'void f()':
<source>:13:25: warning: statement with no effect [-Wunused-value]
13 | QQQ q("dogsdogsdogs");
| ^
<source>:14:9: warning: 'q' may be used uninitialized [-Wmaybe-uninitialized]
14 | sink(q);
| ~~~~^~~
<source>:10:6: note: by argument 1 of type 'const QQQ&' to 'void sink(const
QQQ&)' declared here
10 | void sink(const QQQ&);
| ^~~~
<source>:13:9: note: 'q' declared here
13 | QQQ q("dogsdogsdogs");
|
```
And no code is generated for the initialization fo variable `q`
GCC 13 and Clang 19 accept this code with no warnings and the correct
initialization code is generated.