commit d98a90afa73cecd8c62a93381cde2077471753f2
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Wed Feb 10 12:41:26 2016 +0000
Backport PR c++/61198 fix
gcc:
2014-12-19 Kai Tietz <ktietz@redhat.com>
PR c++/61198
* pt.c (most_general_template): Don't break for template-alias.
gcc/testsuite:
2014-12-19 Kai Tietz <ktietz@redhat.com>
Paolo Carlini <paolo.carlini@oracle.com>
PR c++/61198
* g++.dg/cpp0x/alias-decl-45.C: New file.
@@ -18873,6 +18873,7 @@ most_general_template (tree decl)
break;
if (CLASS_TYPE_P (TREE_TYPE (decl))
+ && !TYPE_DECL_ALIAS_P (TYPE_NAME (TREE_TYPE (decl)))
&& CLASSTYPE_TEMPLATE_SPECIALIZATION (TREE_TYPE (decl)))
break;
new file mode 100644
@@ -0,0 +1,24 @@
+// PR c++/61198
+// { dg-do compile { target c++11 } }
+
+template<int herp, typename derp_t>
+struct broken
+{
+ template<typename target_t>
+ using rebind = broken<herp, target_t>;
+};
+
+template<typename derp_t>
+struct broken<2, derp_t>
+{
+ template<typename target_t>
+ using rebind = broken<2, target_t>;
+};
+
+int main(int argc, char **argv)
+{
+ broken<2, float>::rebind<double> u;
+
+ return 0;
+}
+