<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW " title="NEW --- - [ms] unqualified lookup into dependent base class failure" href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_bugs_show-5Fbug.cgi-3Fid-3D23810&d=AwMBaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=pF93YEPyB-J_PERP4DUZOJDzFVX5ZQ57vQk33wu0vio&m=YAt5k62969PYfnMiTliF9bj4f12x7E96o1_lyoG3V3Y&s=bMf4ikUKbf6y1u0EwJY_wl0X8doLpxq7Cux_MIHsv94&e=">23810</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[ms] unqualified lookup into dependent base class failure
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>-New Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>hans@chromium.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvmbugs@cs.uiuc.edu, nicolasweber@gmx.de, rnk@google.com
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>After Clang r239373, the following test case fails:

$ clang -cc1 -triple i686-pc-windows-msvc18.0.0 -fms-extensions
-fms-compatibility -std=c++11 -fdelayed-template-parsing getparent.ii

  void GetParent(int);                                                          

  struct CWindow {
    void GetParent() {}
  };                                                                            

  template <class TBase> struct CWindowImplRoot : TBase {                       
    void ForwardNotifications();                                                
  };                                                                            
  template <class TBase> void CWindowImplRoot<TBase>::ForwardNotifications() {
    GetParent();                                                                
  }

  template <class TBase, class TWinTraits> struct CWindowImpl :
CWindowImplRoot<TBase> { };                                              

  struct CAxFrameWindow : CWindowImpl<CWindow, float> {};

  struct __declspec(dllexport) S : CWindowImpl<CWindow, int> {};


getparent.ii:11:5: error: no matching function for call to 'GetParent'
    GetParent();
    ^~~~~~~~~
getparent.ii:1:8: note: candidate function not viable: requires 1 argument, but
0 were provided
  void GetParent(int);
       ^



(Reduced from build failure currently occurring in Chromium:
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__build.chromium.org_p_chromium.fyi_builders_ClangToTWin64-2528dll-2529_builds_635_steps_compile_logs_stdio&d=AwMBaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=pF93YEPyB-J_PERP4DUZOJDzFVX5ZQ57vQk33wu0vio&m=YAt5k62969PYfnMiTliF9bj4f12x7E96o1_lyoG3V3Y&s=_QOl4nkrxNHyOU1VuEPZGrfeTm9o1lNwf7kGNUOWYOs&e=">http://build.chromium.org/p/chromium.fyi/builders/ClangToTWin64%28dll%29/builds/635/steps/compile/logs/stdio</a>)

Before r239373, we would not propagate dllexport from CWindowImpl<CWindow,int>
to its base CWindowImplRoot<CWindow>, because the latter had previously been
instantiated. Because of that, it seems we didn't use to instantiate
ForwardNotifications() and hit this error.

The lookup problem existed before r239373, though. If the CAxFrameWindow
definition is removed, the same lookup error occurs in previous Clangs
(including 3.6).</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>