[LLVMbugs] [Bug 23810] New: [ms] unqualified lookup into dependent base class failure

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Jun 10 10:53:40 PDT 2015


https://llvm.org/bugs/show_bug.cgi?id=23810

            Bug ID: 23810
           Summary: [ms] unqualified lookup into dependent base class
                    failure
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: hans at chromium.org
                CC: llvmbugs at cs.uiuc.edu, nicolasweber at gmx.de,
                    rnk at google.com
    Classification: Unclassified

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:
http://build.chromium.org/p/chromium.fyi/builders/ClangToTWin64%28dll%29/builds/635/steps/compile/logs/stdio)

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).

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20150610/0b57db12/attachment.html>


More information about the llvm-bugs mailing list