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

            Bug ID: 89906
           Summary: [8 Regression] template template parameter redeclared
           Product: gcc
           Version: 8.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: romain.geissler at amadeus dot com
  Target Milestone: ---

Hi,

The following snippet started to be rejected between:
g++ (GCC) 8.3.1 20190225
and
g++ (GCC) 8.3.1 20190331

, only when using -std=gnu++17). Clang 8 happily compiles it.


> cat reproducer.cpp
template <template <typename T> class Tmpl> struct TemplateSel {};

template <template <typename T> class T1> struct Templates1
{                                                                           
    typedef TemplateSel<T1> Head;
};

template <template <typename T1, typename T2, typename T3> class F> struct
quote3;

template <template <typename P1, typename P2, typename P3> class F> struct
quote3 {};


> /opt/1A/toolchain/x86_64-2.6.32-v4.0.55/bin/g++  -std=gnu++17 -o reproducer 
> -c reproducer.cpp
reproducer.cpp:8:66: error: template parameter ‘template<class T1, class T2,
class T3> class F’
 template <template <typename T1, typename T2, typename T3> class F> struct
quote3;
                                                                  ^
reproducer.cpp:10:76: error: redeclared here as ‘template<class P1, class P2,
class P3> class F’
 template <template <typename P1, typename P2, typename P3> class F> struct
quote3 {};
                                                                           
^~~~~~


Cheers,
Romain

Reply via email to