https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121518
Bug ID: 121518
Summary: Deducing member array type from string literal
Product: gcc
Version: 15.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: nedimsehic50 at gmail dot com
Target Milestone: ---
Attempting to compile the following code we get an error shown in the comment:
#include <cstddef>
template <std::size_t N>
struct S {
char str[N]{};
};
int main() {
S s0{"a"}; // OK
S s1("a"); // error: class template argument deduction failed
// note: mismatched types 'S<N>' and 'const char*'
}
Deduction here should be possible. According to this defect report
(https://cplusplus.github.io/CWG/issues/2681.html), there should be an
appropriate deduction guide which takes an lvalue reference to the
const-qualified type of `str` which is `const char (&)[N]`, but it seems like
that doesn't happen here.