public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/104113] New: DR 625 forbids "auto" being used in template argument and parser fails to issue correct error message for it
@ 2022-01-19 10:46 nickhuang99 at hotmail dot com
  2022-01-19 11:01 ` [Bug c++/104113] " pinskia at gcc dot gnu.org
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: nickhuang99 at hotmail dot com @ 2022-01-19 10:46 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 104113
           Summary: DR 625 forbids "auto" being used in template argument
                    and parser fails to issue correct error message for it
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nickhuang99 at hotmail dot com
  Target Milestone: ---

DR 625 forbids "auto" to be used in template argument. And developer has
specific error message for this and fails to issue it for the very case:
(https://www.godbolt.org/z/198fn1jr1)

template <class T> struct A {};
template <class T> void f(A<T> x) {}

void g()
{
    f(A<short>());

    A<auto> x = A<short>();
}


The error message is very misleading. Note that only the 2nd error message is
parser confirmed error message which is considered as conversion issue instead
of "auto" being forbidden to be in template argument. (The 1st error message is
parser tentative parsing issued.)

<source>: In function 'void g()':
<source>:14:11: error: template argument 1 is invalid
   14 |     A<auto> x = A<short>();
      |           ^
<source>:14:17: error: cannot convert 'A<short int>' to 'int' in initialization
   14 |     A<auto> x = A<short>();
      |                 ^~~~~~~~~~
      |                 |
      |                 A<short int>



And this case can be reduced as 

template<typename T>
struct A{};
A<auto> x = A<short>();

This is related to PR104091, however, it is very different because this one is
not affected by "-std=c++XX"

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

end of thread, other threads:[~2024-03-06  2:13 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-19 10:46 [Bug c++/104113] New: DR 625 forbids "auto" being used in template argument and parser fails to issue correct error message for it nickhuang99 at hotmail dot com
2022-01-19 11:01 ` [Bug c++/104113] " pinskia at gcc dot gnu.org
2022-01-19 11:05 ` [Bug c++/104113] invalid template argument causes the type to become int which confuses the rest of the diagnostic pinskia at gcc dot gnu.org
2022-01-19 11:18 ` pinskia at gcc dot gnu.org
2022-01-19 11:21 ` pinskia at gcc dot gnu.org
2022-01-21 14:48 ` nickhuang99 at hotmail dot com
2022-01-21 15:02 ` nickhuang99 at hotmail dot com
2022-01-21 15:44 ` mpolacek at gcc dot gnu.org
2023-08-01  1:26 ` pinskia at gcc dot gnu.org
2023-08-01  1:29 ` pinskia at gcc dot gnu.org
2024-03-06  2:13 ` pinskia at gcc dot gnu.org

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).