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: [email protected]
Reporter: [email protected]
CC: [email protected], [email protected],
[email protected]
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.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs