Reduced from http://stackoverflow.com/q/39460120/2756719: template<template <class> class> struct meow {}; template<class T> using kitty = T&; meow<kitty> u; results in the following bogus error: prog.cc: In instantiation of 'struct meow<kitty>': prog.cc:4:13: required from here prog.cc:1:46: error: type/value mismatch at argument 1 in template parameter list for 'template<template<class> class<template-parameter-1-1> > struct meow' template<template <class> class> struct meow {}; ^ prog.cc:1:46: note: expected a class template, got 'kitty' prog.cc:1:46: error: type/value mismatch at argument 1 in template parameter list for 'meow< <template-parameter-1-1> >::meow' prog.cc:1:46: note: expected a class template, got 'kitty' It compiles fine if 'kitty' is instead defined as T or T*.
Got fixed in r241425 but the testcase added doesn't contain an alias template.
Author: mpolacek Date: Fri Aug 2 17:26:02 2019 New Revision: 274024 URL: https://gcc.gnu.org/viewcvs?rev=274024&root=gcc&view=rev Log: PR c++/77575 * g++.dg/cpp0x/nontype2.C: New test. Added: trunk/gcc/testsuite/g++.dg/cpp0x/nontype2.C Modified: trunk/gcc/testsuite/ChangeLog
Fixed.