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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2022-01-18

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
The code from the attachment is:

namespace One {
    typedef enum { A, B } Type;

    template <Type type,typename T> class AClass;

    template <typename T>
    class AClass<A,T> { };

    template <typename T>
    class AClass<B,T> { };
}

typedef One::Type NewType;

template <NewType type,typename T>
using OtherNew = One::AClass;

class BClass {

    typedef One::Type Type;

    template <Type type,typename T>
    using New = One::AClass;
};


With -std=gnu++17 we print:

101221.C:16:18: error: missing template arguments after 'AClass<...auto...>'
   16 | using OtherNew = One::AClass;
      |                  ^~~
101221.C:4:43: note: 'template<One::Type type, class T> class One::AClass'
declared here
    4 |     template <Type type,typename T> class AClass;
      |                                           ^~~~~~
101221.C:23:17: error: missing template arguments after 'AClass<...auto...>'
   23 |     using New = One::AClass;
      |                 ^~~
101221.C:4:43: note: 'template<One::Type type, class T> class One::AClass'
declared here
    4 |     template <Type type,typename T> class AClass;
      |                                           ^~~~~~


With -std=gnu++20 we print:

101221.C:16:18: error: 'auto' not allowed in alias declaration
   16 | using OtherNew = One::AClass;
      |                  ^~~
101221.C:23:17: error: 'auto' not allowed in alias declaration
   23 |     using New = One::AClass;
      |                 ^~~


Both diagnostics are wrong.

Clang prints the same error for C++17 and C++20.

Reply via email to