- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
https://godbolt.org/g/lrH8Dy
struct A { template <class T> auto func(T t) -> decltype(T::other); }; struct B: A { template <class T> auto func(T t) -> decltype(T::other); using A::func; }; struct P { int other; }; void call(B b, P p) { b.func(p); }
icc considers the call ambiguous when it should hide the base class declarations. See also [namespace.udecl](15): "When a using-declaration brings declarations from a base class into a derived class, member functions and member function templates in the derived class override and/or hide member functions and member function templates with the same name, parameter-type-list (8.3.5), cv-qualification, and ref-qualifier (if any) in a base class (rather than conflicting). Such hidden or overridden declarations are excluded from the set of declarations introduced by the using-declaration."
Cheers,
Xavi
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the bug report and the nice small test case. I can reproduce this with our current development compiler and have entered this as DPD200418459 in our internal bug tracking database.
Judy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Judy.
Do we have more information on this?
Just noticed Intel Compiler 17.0 Update 4 has been released and the compiler bug isn't fixed.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
No update, it's still open on our end.
Judy

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page