public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/99558] New: wrong argument types reported for "no matching function" error message if ctor argument is a variable
@ 2021-03-12  8:30 jfhart085 at gmail dot com
  2021-03-12  9:30 ` [Bug c++/99558] " redi at gcc dot gnu.org
  2021-03-13  7:15 ` jfhart085 at gmail dot com
  0 siblings, 2 replies; 3+ messages in thread
From: jfhart085 at gmail dot com @ 2021-03-12  8:30 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 99558
           Summary: wrong argument types reported for "no matching
                    function" error message if ctor argument is a variable
           Product: gcc
           Version: 10.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jfhart085 at gmail dot com
  Target Milestone: ---

Created attachment 50371
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50371&action=edit
utl2.cc - demonstrates using deliberate error message from compile

Wrong argument types are reported for "no matching function" error message for
a ctor if a ctor argument is a variable. The argument is reported as being a
reference when it is not.  An error message is deliberately generated to
demonstrate the problem as follows:

wrong argument type: variable used as argument, first argument is shown as
   "int &" but is actually "int" :

$ g++ -c -o utl2.o utl2.cc
utl2.cc: In function "int main()":
utl2.cc:13:5: error: no matching function for call to "cls4::cls4(int&, int)"

correct argument type: constant used as argument, first argument is correctly
shown as "int"

$ g++ -D DBG1 -c -o utl2.o utl2.cc
utl2.cc: In function "int main()":
utl2.cc:13:5: error: no matching function for call to "cls4::cls4(int, int)"

from gcc -v :
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/10.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /home/jhart/temp1/gcc-10.2.0/configure --prefix=/usr
--disable-multilib --with-system-zlib --enable-languages=c,c++,fortran
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.2.0 (GCC)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/99558] wrong argument types reported for "no matching function" error message if ctor argument is a variable
  2021-03-12  8:30 [Bug c++/99558] New: wrong argument types reported for "no matching function" error message if ctor argument is a variable jfhart085 at gmail dot com
@ 2021-03-12  9:30 ` redi at gcc dot gnu.org
  2021-03-13  7:15 ` jfhart085 at gmail dot com
  1 sibling, 0 replies; 3+ messages in thread
From: redi at gcc dot gnu.org @ 2021-03-12  9:30 UTC (permalink / raw)
  To: gcc-bugs

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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |INVALID
             Status|UNCONFIRMED                 |RESOLVED

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to J. Hart from comment #0)
> $ g++ -c -o utl2.o utl2.cc
> utl2.cc: In function "int main()":
> utl2.cc:13:5: error: no matching function for call to "cls4::cls4(int&, int)"
> 
> correct argument type: constant used as argument, first argument is
> correctly shown as "int"

GCC is correct. When you use a variable you are passing an lvalue of type int,
which is what int& means. When you pass a constant it is an rvalue, i.e. int.

> 
> $ g++ -D DBG1 -c -o utl2.o utl2.cc
> utl2.cc: In function "int main()":
> utl2.cc:13:5: error: no matching function for call to "cls4::cls4(int, int)"

Because you're passing two rvalues.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/99558] wrong argument types reported for "no matching function" error message if ctor argument is a variable
  2021-03-12  8:30 [Bug c++/99558] New: wrong argument types reported for "no matching function" error message if ctor argument is a variable jfhart085 at gmail dot com
  2021-03-12  9:30 ` [Bug c++/99558] " redi at gcc dot gnu.org
@ 2021-03-13  7:15 ` jfhart085 at gmail dot com
  1 sibling, 0 replies; 3+ messages in thread
From: jfhart085 at gmail dot com @ 2021-03-13  7:15 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from J. Hart <jfhart085 at gmail dot com> ---
Thank you very much for your kind attention and assistance.  I had 
thought it was indicating a reference rather than an lvalue.  Your 
correction is most useful and appreciated.  I deliberately introduced 
the second error to demonstrate the first, so the second one was expected.

Thanks again,

J. Hart

On 03/12/2021 06:30 PM, redi at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99558
>
> Jonathan Wakely <redi at gcc dot gnu.org> changed:
>
>             What    |Removed                     |Added
> ----------------------------------------------------------------------------
>           Resolution|---                         |INVALID
>               Status|UNCONFIRMED                 |RESOLVED
>
> --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
> (In reply to J. Hart from comment #0)
>> $ g++ -c -o utl2.o utl2.cc
>> utl2.cc: In function "int main()":
>> utl2.cc:13:5: error: no matching function for call to "cls4::cls4(int&, int)"
>>
>> correct argument type: constant used as argument, first argument is
>> correctly shown as "int"
> GCC is correct. When you use a variable you are passing an lvalue of type int,
> which is what int& means. When you pass a constant it is an rvalue, i.e. int.
>
>> $ g++ -D DBG1 -c -o utl2.o utl2.cc
>> utl2.cc: In function "int main()":
>> utl2.cc:13:5: error: no matching function for call to "cls4::cls4(int, int)"
> Because you're passing two rvalues.
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-03-13  7:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-12  8:30 [Bug c++/99558] New: wrong argument types reported for "no matching function" error message if ctor argument is a variable jfhart085 at gmail dot com
2021-03-12  9:30 ` [Bug c++/99558] " redi at gcc dot gnu.org
2021-03-13  7:15 ` jfhart085 at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).