https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110187

            Bug ID: 110187
           Summary: The compiler fails to warn about deleted constructor
           Product: gcc
           Version: 13.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: amir.ahmed.ansari at outlook dot com
  Target Milestone: ---

Created attachment 55293
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55293&action=edit
Code to replicate the problem

Compile the attached code with the following flags:

-std=c++17 -Wall -pedantic -Wextra -Weffc++ -O3 -flto

The program compiles successfully. Now attempt to create an object of type B as

auto b = B{};

Now the compiler spits errors (see below). This is very confusing for an
ordinary user. It becomes worse if B has a second constructor that initializes
a and this second constructor is used everywhere. This can lurk in the codebase
undetected until somebody finally instantiates B with the default constructor.
And it gets even worse when B is passed as a template argument and the error is
generated deep within the template instantiation.

<source>: In function 'int main()':
<source>:17:16: error: use of deleted function 'B::B()'
   17 |     auto b = B{};
      |                ^
<source>:9:5: note: 'B::B()' is implicitly deleted because the default
definition would be ill-formed:
    9 |     B() = default;
      |     ^
<source>:9:5: error: no matching function for call to 'A::A()'
<source>:3:5: note: candidate: 'A::A(int)'
    3 |     A(int) {}
      |     ^
<source>:3:5: note:   candidate expects 1 argument, 0 provided
<source>:1:7: note: candidate: 'constexpr A::A(const A&)'
    1 | class A
      |       ^
<source>:1:7: note:   candidate expects 1 argument, 0 provided
<source>:1:7: note: candidate: 'constexpr A::A(A&&)'
<source>:1:7: note:   candidate expects 1 argument, 0 provided
  • [Bug c++/110187] New: Th... amir.ahmed.ansari at outlook dot com via Gcc-bugs

Reply via email to