<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 03.05.2011, at 23:00, Richard Smith wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi again,<br><br>On Thu, April 28, 2011 22:02, Richard Smith wrote:<br><blockquote type="cite">The attached patch implements C++11 alias templates.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I've added a new Decl node for alias templates: TypeAliasTemplateDecl.<br></blockquote><blockquote type="cite">Alias template specialization types also need to track the<br></blockquote><blockquote type="cite">non-canonicalized aliased type, so I've extended TemplateSpecializationType<br></blockquote><blockquote type="cite">to store a non-canonical QualType in the case where it refers to an alias<br></blockquote><blockquote type="cite">template.<br></blockquote>[...]<br><br>I noticed that AST serialization support was missing from the previous<br>patch. Attached is a diff to apply on top of the previous patch to<br>implement such support, and a complete patch rebased to ToT.<br><br>Review comments appreciated!<br></div></blockquote></div><br><div>Awesome! Very thorough test cases.</div><div><br></div><div>One tiny little question, but this is ready to commit either way.</div><div><br></div><div><blockquote type="cite"><div><font class="Apple-style-span" color="#000000">Index: test/CXX/temp/temp.decls/p3.cpp</font></div><div><font class="Apple-style-span" color="#000000">===================================================================</font></div><div><font class="Apple-style-span" color="#000000">--- test/CXX/temp/temp.decls/p3.cpp</font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" color="#000000">        </font></span><font class="Apple-style-span" color="#000000">(revision 0)</font></div><div><font class="Apple-style-span" color="#000000">+++ test/CXX/temp/temp.decls/p3.cpp</font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" color="#000000">    </font></span><font class="Apple-style-span" color="#000000">(revision 0)</font></div><div><font class="Apple-style-span" color="#000000">@@ -0,0 +1,8 @@</font></div><div><font class="Apple-style-span" color="#000000">+// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s</font></div><div><font class="Apple-style-span" color="#000000">+</font></div><div><font class="Apple-style-span" color="#000000">+template<typename T> using A = int;</font></div><div><font class="Apple-style-span" color="#000000">+template<typename T> using A<T*> = char; // expected-error {{partial specialization of alias templates is not permitted}}</font></div><div><font class="Apple-style-span" color="#000000">+template<> using A<char> = char; // expected-error {{explicit specialization of alias templates is not permitted}}</font></div><div><font class="Apple-style-span" color="#000000">+template using A<char> = char; // expected-error {{explicit instantiation of alias templates is not permitted}}</font></div><div><font class="Apple-style-span" color="#000000">+// Best guess as to what the user was trying to do: missing template<>.</font></div><div><font class="Apple-style-span" color="#000000">+using A<char> = char; // expected-error {{partial specialization of alias templates is not permitted}}</font></div></blockquote></div><div><div><br></div></div><div>If the user is missing template<>, wouldn't that be a full specialization and thus should say "explicit specialization" in the error message?</div><div><br></div><div>Sebastian</div></body></html>