<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Ping<div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 26, 2015, at 9:08 AM, Ben Langmuir <<a href="mailto:blangmuir@apple.com" class="">blangmuir@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">This patch diagnoses a missing ‘typename’ keyword on nested template types like A<T>::B<U>, to fix <a href="http://llvm.org/pr16909" class="">llvm.org/pr16909</a>. In addition to fixing an accepts-invalid, in C++11 such types would cause assertion failures and/or invalid LLVM IR when used with ‘auto’.<div class=""><br class=""></div><div class="">I’m not 100% sure if the changes to test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp are desirable, or if we should suppress the missing ‘typename’ diagnostic when we’re already recovering on X<T>::X<T>.  I’m open to suggestions :-)</div><div class=""><br class=""></div><div class="">Ben</div><div class=""><br class=""></div><div class=""></div></div><span id="cid:F07AC0C3-0C93-4BAC-9DA0-7121ACA68F5D@apple.com"><pr16909.patch></span><meta http-equiv="Content-Type" content="text/html charset=us-ascii" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""></div></div></div></blockquote></div><br class=""></div></body></html>