<p dir="ltr"><br>
On 5 Dec 2013 06:42, "Alp Toker" <<a href="mailto:alp@nuanti.com">alp@nuanti.com</a>> wrote:<br>
><br>
><br>
> On 05/12/2013 07:51, Richard Smith wrote:<br>
>><br>
>> Author: rsmith<br>
>> Date: Thu Dec  5 01:51:02 2013<br>
>> New Revision: 196481<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=196481&view=rev">http://llvm.org/viewvc/llvm-project?rev=196481&view=rev</a><br>
>> Log:<br>
>> Implement DR482: namespace members can be redeclared with a qualified name<br>
>> within their namespace, and such a redeclaration isn't required to be a<br>
>> definition any more.<br>
>><br>
>> Update DR status page to say Clang 3.4 instead of SVN and add new Clang 3.5<br>
>> category (but keep Clang 3.4 yellow for now).<br>
>><br>
>> Modified:<br>
>>      cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td<br>
>>      cfe/trunk/lib/Sema/SemaDecl.cpp<br>
>>      cfe/trunk/lib/Sema/SemaDeclCXX.cpp<br>
>>      cfe/trunk/test/CXX/dcl.decl/dcl.meaning/p1.cpp<br>
>>      cfe/trunk/test/CXX/drs/dr1xx.cpp<br>
>>      cfe/trunk/test/CXX/drs/dr4xx.cpp<br>
>>      cfe/trunk/test/CXX/temp/p3.cpp<br>
>>      cfe/trunk/test/SemaCXX/nested-name-spec.cpp<br>
>>      cfe/trunk/www/cxx_dr_status.html<br>
>>      cfe/trunk/www/make_cxx_dr_status<br>
>><br>
>> Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=196481&r1=196480&r2=196481&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=196481&r1=196480&r2=196481&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)<br>
>> +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Thu Dec  5 01:51:02 2013<br>
>> @@ -4458,6 +4458,9 @@ def warn_member_extra_qualification : Wa<br>
>>     "extra qualification on member %0">, InGroup<Microsoft>;<br>
>>   def err_member_extra_qualification : Error<<br>
>>     "extra qualification on member %0">;<br>
>> +def warn_namespace_member_extra_qualification : Warning<<br>
>> +  "extra qualification on member %0">,<br>
>> +  InGroup<DiagGroup<"extra-qualification">>;<br>
>>   def err_member_qualification : Error<<br>
>>     "non-friend class member %0 cannot have a qualified name">;<br>
>>   def note_member_def_close_match : Note<"member declaration nearly matches">;<br>
>><br>
>> Modified: cfe/trunk/lib/Sema/SemaDecl.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=196481&r1=196480&r2=196481&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=196481&r1=196480&r2=196481&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/lib/Sema/SemaDecl.cpp (original)<br>
>> +++ cfe/trunk/lib/Sema/SemaDecl.cpp Thu Dec  5 01:51:02 2013<br>
>> @@ -4115,33 +4115,31 @@ bool Sema::DiagnoseClassNameShadow(DeclC<br>
>>   /// \returns true if we cannot safely recover from this error, false otherwise.<br>
>>   bool Sema::diagnoseQualifiedDeclaration(CXXScopeSpec &SS, DeclContext *DC,<br>
>>                                           DeclarationName Name,<br>
>> -                                      SourceLocation Loc) {<br>
>> +                                        SourceLocation Loc) {<br>
>>     DeclContext *Cur = CurContext;<br>
>>     while (isa<LinkageSpecDecl>(Cur) || isa<CapturedDecl>(Cur))<br>
>>       Cur = Cur->getParent();<br>
>> -<br>
>> -  // C++ [dcl.meaning]p1:<br>
>> -  //   A declarator-id shall not be qualified except for the definition<br>
>> -  //   of a member function (9.3) or static data member (9.4) outside of<br>
>> -  //   its class, the definition or explicit instantiation of a function<br>
>> -  //   or variable member of a namespace outside of its namespace, or the<br>
>> -  //   definition of an explicit specialization outside of its namespace,<br>
>> -  //   or the declaration of a friend function that is a member of<br>
>> -  //   another class or namespace (11.3). [...]<br>
>> -<br>
>> -  // The user provided a superfluous scope specifier that refers back to the<br>
>> -  // class or namespaces in which the entity is already declared.<br>
>> +<br>
>> +  // If the user provided a superfluous scope specifier that refers back to the<br>
>> +  // class in which the entity is already declared, diagnose and ignore it.<br>
>>     //<br>
>>     // class X {<br>
>>     //   void X::f();<br>
>>     // };<br>
>> +  //<br>
>> +  // Note, it was once ill-formed to give redundant qualification in all<br>
>> +  // contexts, but that rule was removed by DR482.<br>
>>     if (Cur->Equals(DC)) {<br>
>> -    Diag(Loc, LangOpts.MicrosoftExt? diag::warn_member_extra_qualification<br>
>> -                                   : diag::err_member_extra_qualification)<br>
>> -      << Name << FixItHint::CreateRemoval(SS.getRange());<br>
>> -    SS.clear();<br>
>> +    if (Cur->isRecord()) {<br>
>> +      Diag(Loc, LangOpts.MicrosoftExt ? diag::warn_member_extra_qualification<br>
>> +                                      : diag::err_member_extra_qualification)<br>
>> +        << Name << FixItHint::CreateRemoval(SS.getRange());<br>
>> +      SS.clear();<br>
>> +    } else {<br>
>> +      Diag(Loc, diag::warn_namespace_member_extra_qualification) << Name;<br>
>> +    }<br>
>>       return false;<br>
>> -  }<br>
>> +  }<br>
>>       // Check whether the qualifying scope encloses the scope of the original<br>
>>     // declaration.<br>
>> @@ -7248,11 +7246,12 @@ Sema::ActOnFunctionDeclarator(Scope *S,<br>
>>           }<br>
>>         }<br>
>>   -    } else if (!D.isFunctionDefinition() && D.getCXXScopeSpec().isSet() &&<br>
>> +    } else if (!D.isFunctionDefinition() &&<br>
>> +               isa<CXXMethodDecl>(NewFD) && NewFD->isOutOfLine() &&<br>
>>                  !isFriend && !isFunctionTemplateSpecialization &&<br>
>>                  !isExplicitSpecialization) {<br>
>>         // An out-of-line member function declaration must also be a<br>
>> -      // definition (C++ [dcl.meaning]p1).<br>
>> +      // definition (C++ [class.mfct]p2).<br>
>>         // Note that this is not the case for explicit specializations of<br>
>>         // function templates or member functions of class templates, per<br>
>>         // C++ [temp.expl.spec]p2. We also allow these declarations as an<br>
>><br>
>> Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=196481&r1=196480&r2=196481&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=196481&r1=196480&r2=196481&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)<br>
>> +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Thu Dec  5 01:51:02 2013<br>
>> @@ -12133,11 +12133,13 @@ void Sema::ActOnCXXEnterDeclInitializer(<br>
>>     // If there is no declaration, there was an error parsing it.<br>
>>     if (D == 0 || D->isInvalidDecl()) return;<br>
>>   -  // We should only get called for declarations with scope specifiers, like:<br>
>> -  //   int foo::bar;<br>
>> -  assert(D->isOutOfLine());<br>
>> -  EnterDeclaratorContext(S, D->getDeclContext());<br>
>> -<br>
>> +  // We will always have a nested name specifier here, but this declaration<br>
>> +  // might not be out of line if the specifier names the current namespace:<br>
>> +  //   extern int n;<br>
>> +  //   int ::n = 0;<br>
>> +  if (D->isOutOfLine())<br>
>> +    EnterDeclaratorContext(S, D->getDeclContext());<br>
>> +<br>
>>     // If we are parsing the initializer for a static data member, push a<br>
>>     // new expression evaluation context that is associated with this static<br>
>>     // data member.<br>
>> @@ -12152,10 +12154,10 @@ void Sema::ActOnCXXExitDeclInitializer(S<br>
>>     if (D == 0 || D->isInvalidDecl()) return;<br>
>>       if (isStaticDataMember(D))<br>
>> -    PopExpressionEvaluationContext();<br>
>> +    PopExpressionEvaluationContext();<br>
>>   -  assert(D->isOutOfLine());<br>
>> -  ExitDeclaratorContext(S);<br>
>> +  if (D->isOutOfLine())<br>
>> +    ExitDeclaratorContext(S);<br>
>>   }<br>
>>     /// ActOnCXXConditionDeclarationExpr - Parsed a condition declaration of a<br>
>><br>
>> Modified: cfe/trunk/test/CXX/dcl.decl/dcl.meaning/p1.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/dcl.decl/dcl.meaning/p1.cpp?rev=196481&r1=196480&r2=196481&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/dcl.decl/dcl.meaning/p1.cpp?rev=196481&r1=196480&r2=196481&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/test/CXX/dcl.decl/dcl.meaning/p1.cpp (original)<br>
>> +++ cfe/trunk/test/CXX/dcl.decl/dcl.meaning/p1.cpp Thu Dec  5 01:51:02 2013<br>
>> @@ -29,9 +29,17 @@ namespace NS {<br>
>>     template<typename T> void wibble(T);<br>
>>   }<br>
>>   namespace NS {<br>
>> -  void NS::foo() {} // expected-error{{extra qualification on member 'foo'}}<br>
>> -  int NS::bar; // expected-error{{extra qualification on member 'bar'}}<br>
>> -  struct NS::X { }; // expected-error{{extra qualification on member 'X'}}<br>
>> -  template<typename T> struct NS::Y; // expected-error{{extra qualification on member 'Y'}}<br>
>> -  template<typename T> void NS::wibble(T) { } // expected-error{{extra qualification on member 'wibble'}}<br>
>> +  // Under DR482, these are all valid, except for forward-declaring a struct<br>
>> +  // with a nested-name-specifier.<br>
>> +  void NS::foo(); // expected-warning {{extra qualification}}<br>
>> +  extern int NS::bar; // expected-warning {{extra qualification}}<br>
>> +  struct NS::X; // expected-error {{forward declaration of struct cannot have a nested name specifier}} expected-warning {{extra qualification}}<br>
>> +  template<typename T> struct NS::Y; // expected-error {{forward declaration of struct cannot have a nested name specifier}} expected-warning {{extra qualification}}<br>
>> +  template<typename T> void NS::wibble(T); // expected-warning {{extra qualification}}<br>
>> +<br>
>> +  void NS::foo() {} // expected-warning{{extra qualification on member 'foo'}}<br>
>> +  int NS::bar; // expected-warning{{extra qualification on member 'bar'}}<br>
>> +  struct NS::X { }; // expected-warning{{extra qualification on member 'X'}}<br>
>> +  template<typename T> struct NS::Y { }; // expected-warning{{extra qualification on member 'Y'}}<br>
>> +  template<typename T> void NS::wibble(T) { } // expected-warning{{extra qualification on member 'wibble'}}<br>
>>   }<br>
>><br>
>> Modified: cfe/trunk/test/CXX/drs/dr1xx.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr1xx.cpp?rev=196481&r1=196480&r2=196481&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr1xx.cpp?rev=196481&r1=196480&r2=196481&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/test/CXX/drs/dr1xx.cpp (original)<br>
>> +++ cfe/trunk/test/CXX/drs/dr1xx.cpp Thu Dec  5 01:51:02 2013<br>
>> @@ -592,11 +592,10 @@ namespace dr155 { // dr155: dup 632<br>
>>     struct S { int n; } s = { { 1 } }; // expected-warning {{braces around scalar initializer}}<br>
>>   }<br>
>>   -namespace dr159 { // dr159: no<br>
>> +namespace dr159 { // dr159: 3.5<br>
>>     namespace X { void f(); }<br>
>>     void f();<br>
>> -  // FIXME: This should be accepted.<br>
>> -  void dr159::f() {} // expected-error {{extra qualification}}<br>
>> +  void dr159::f() {} // expected-warning {{extra qualification}}<br>
>>     void dr159::X::f() {}<br>
>>   }<br>
>>   <br>
>> Modified: cfe/trunk/test/CXX/drs/dr4xx.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr4xx.cpp?rev=196481&r1=196480&r2=196481&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr4xx.cpp?rev=196481&r1=196480&r2=196481&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/test/CXX/drs/dr4xx.cpp (original)<br>
>> +++ cfe/trunk/test/CXX/drs/dr4xx.cpp Thu Dec  5 01:51:02 2013<br>
>> @@ -1,6 +1,6 @@<br>
>>   // RUN: %clang_cc1 -std=c++98 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors<br>
>>   // RUN: %clang_cc1 -std=c++11 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors<br>
>> -// expected-no-diagnostics<br>
>> +// RUN: %clang_cc1 -std=c++1y %s -verify -fexceptions -fcxx-exceptions -pedantic-errors<br>
>>     namespace dr408 { // dr408: 3.4<br>
>>     template<int N> void g() { int arr[N != 1 ? 1 : -1]; }<br>
>> @@ -30,3 +30,37 @@ namespace dr408 { // dr408: 3.4<br>
>>     template<> int R<int>::arr[2];<br>
>>     template void R<int>::f();<br>
>>   }<br>
>> +<br>
>> +namespace dr482 { // dr482: 3.5<br>
>> +  extern int a;<br>
>> +  void f();<br>
>> +<br>
>> +  int dr482::a = 0; // expected-warning {{extra qualification}}<br>
>> +  void dr482::f() {} // expected-warning {{extra qualification}}<br>
>> +<br>
>> +  inline namespace X { // expected-error 0-1{{C++11 feature}}<br>
>> +    extern int b;<br>
>> +    void g();<br>
>> +    struct S;<br>
>> +  }<br>
>> +  int dr482::b = 0; // expected-warning {{extra qualification}}<br>
>> +  void dr482::g() {} // expected-warning {{extra qualification}}<br>
>> +  struct dr482::S {}; // expected-warning {{extra qualification}}<br>
>> +<br>
>> +  void dr482::f(); // expected-warning {{extra qualification}}<br>
>> +  void dr482::g(); // expected-warning {{extra qualification}}<br>
>> +<br>
>> +  // FIXME: The following are valid in DR482's wording, but these are bugs in<br>
>> +  // the wording which we deliberately don't implement.<br>
>> +  namespace N { typedef int type; }<br>
>> +  typedef int N::type; // expected-error {{typedef declarator cannot be qualified}}<br>
>> +  struct A {<br>
>> +    struct B;<br>
>> +    struct A::B {}; // expected-error {{extra qualification}}<br>
>> +<br>
>> +#if __cplusplus >= 201103L<br>
>> +    enum class C;<br>
>> +    enum class A::C {}; // expected-error {{extra qualification}}<br>
>> +#endif<br>
>> +  };<br>
>> +}<br>
>><br>
>> Modified: cfe/trunk/test/CXX/temp/p3.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/temp/p3.cpp?rev=196481&r1=196480&r2=196481&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/temp/p3.cpp?rev=196481&r1=196480&r2=196481&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/test/CXX/temp/p3.cpp (original)<br>
>> +++ cfe/trunk/test/CXX/temp/p3.cpp Thu Dec  5 01:51:02 2013<br>
>> @@ -8,7 +8,8 @@ template<typename T> int S<T>::a, S<T>::<br>
>>     template<typename T> struct A { static A a; } A<T>::a; // expected-error {{expected ';' after struct}} \<br>
>>                                                             expected-error {{use of undeclared identifier 'T'}} \<br>
>> -                                                          expected-error{{extra qualification}}<br>
>> +                                                          expected-error {{no member named 'a'}} \<br>
>> +                                                          expected-warning {{extra qualification}}<br>
>>     template<typename T> struct B { } f(); // expected-error {{expected ';' after struct}} \<br>
>>                                             expected-error {{requires a type specifier}}<br>
>><br>
>> Modified: cfe/trunk/test/SemaCXX/nested-name-spec.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/nested-name-spec.cpp?rev=196481&r1=196480&r2=196481&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/nested-name-spec.cpp?rev=196481&r1=196480&r2=196481&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/test/SemaCXX/nested-name-spec.cpp (original)<br>
>> +++ cfe/trunk/test/SemaCXX/nested-name-spec.cpp Thu Dec  5 01:51:02 2013<br>
>> @@ -160,7 +160,7 @@ namespace N {<br>
>>     void f();<br>
>>     // FIXME: if we move this to a separate definition of N, things break!<br>
>>   }<br>
>> -void ::global_func2(int) { } // expected-error{{extra qualification on member 'global_func2'}}<br>
>> +void ::global_func2(int) { } // expected-warning{{extra qualification on member 'global_func2'}}<br>
>>     void N::f() { } // okay<br>
>>   <br>
>> Modified: cfe/trunk/www/cxx_dr_status.html<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/www/cxx_dr_status.html?rev=196481&r1=196480&r2=196481&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/www/cxx_dr_status.html?rev=196481&r1=196480&r2=196481&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/www/cxx_dr_status.html (original)<br>
>> +++ cfe/trunk/www/cxx_dr_status.html Thu Dec  5 01:51:02 2013<br>
>> @@ -212,7 +212,7 @@<br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#29">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#29</a>">29</a></td><br>

>>       <td>CD1</td><br>
>>       <td>Linkage of locally declared functions</td><br>
>> -    <td class="svn" align="center">SVN</td><br>
>> +    <td class="svn" align="center">Clang 3.4</td><br>
>>     </tr><br>
>>     <tr><br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#30">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#30</a>">30</a></td><br>

>> @@ -523,7 +523,7 @@<br>
>>     <tr><br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#81">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#81</a>">81</a></td><br>
>>       <td>NAD</td><br>
>> -    <td>Null pointers and C compatibility</td><br>
>> +    <td>Null pointers and C compatability</td><br>
><br>
><br>
> !</p>
<p dir="ltr">This is a generated file; that is the name of the issue on the core issues list.</p>
<p dir="ltr">>>       <td class="na" align="center">N/A</td><br>
>>     </tr><br>
>>     <tr><br>
>> @@ -854,7 +854,7 @@<br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#136">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#136</a>">136</a></td><br>

>>       <td>CD1</td><br>
>>       <td>Default arguments and friend declarations</td><br>
>> -    <td class="svn" align="center">SVN</td><br>
>> +    <td class="svn" align="center">Clang 3.4</td><br>
>>     </tr><br>
>>     <tr><br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#137">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#137</a>">137</a></td><br>

>> @@ -992,7 +992,7 @@<br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#159">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#159</a>">159</a></td><br>

>>       <td>TC1</td><br>
>>       <td>Namespace qualification in declarators</td><br>
>> -    <td class="none" align="center">No</td><br>
>> +    <td class="svn" align="center">SVN</td><br>
>>     </tr><br>
>>     <tr><br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#160">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#160</a>">160</a></td><br>

>> @@ -2488,7 +2488,7 @@ of class templates</td><br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#408">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#408</a>">408</a></td><br>

>>       <td>CD2</td><br>
>>       <td>sizeof applied to unknown-bound array static data member of template</td><br>
>> -    <td class="svn" align="center">SVN</td><br>
>> +    <td class="svn" align="center">Clang 3.4</td><br>
>>     </tr><br>
>>     <tr><br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#409">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#409</a>">409</a></td><br>

>> @@ -2932,7 +2932,7 @@ of class templates</td><br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#482">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#482</a>">482</a></td><br>

>>       <td>DRWP</td><br>
>>       <td>Qualified declarators in redeclarations</td><br>
>> -    <td class="none" align="center">Unknown</td><br>
>> +    <td class="svn" align="center">SVN</td><br>
>>     </tr><br>
>>     <tr><br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#483">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#483</a>">483</a></td><br>

>> @@ -8159,7 +8159,7 @@ and <I>POD class</I></td><br>
>>     <tr class="open"><br>
>>       <td><a href="<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1391">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1391</a>">1391</a></td><br>

>>       <td>drafting</td><br>
>> -    <td>Conversions to parameter types with non-deduced template arguments</td><br>
>> +    <td>Conversions to parameter types with non deduced template arguments</td><br>
>>       <td align="center">Not resolved</td><br>
>>     </tr><br>
>>     <tr><br>
>><br>
>> Modified: cfe/trunk/www/make_cxx_dr_status<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/www/make_cxx_dr_status?rev=196481&r1=196480&r2=196481&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/www/make_cxx_dr_status?rev=196481&r1=196480&r2=196481&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/www/make_cxx_dr_status (original)<br>
>> +++ cfe/trunk/www/make_cxx_dr_status Thu Dec  5 01:51:02 2013<br>
>> @@ -101,9 +101,12 @@ def availability(issue):<br>
>>     if status == 'unknown':<br>
>>       avail = 'Unknown'<br>
>>       avail_style = ' class="none"'<br>
>> -  elif status == '3.4':<br>
>> +  elif status == '3.5':<br>
>>       avail = 'SVN'<br>
>>       avail_style = ' class="svn"'<br>
>> +  elif status == '3.4':<br>
>> +    avail = 'Clang %s' % status<br>
>> +    avail_style = ' class="svn"'<br>
>>     elif status in ('3.1', '3.2', '3.3'):<br>
>>       avail = 'Clang %s' % status<br>
>>       avail_style = ' class="full"'<br>
>><br>
>><br>
>> _______________________________________________<br>
>> cfe-commits mailing list<br>
>> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
><br>
><br>
> -- <br>
> <a href="http://www.nuanti.com">http://www.nuanti.com</a><br>
> the browser experts<br>
><br>
</p>