Quantcast
Channel: Intel® Software - Intel® C++ Compiler
Viewing all articles
Browse latest Browse all 1175

Bug Report: icc 17

$
0
0

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

Thread Topic: 

Bug Report

Viewing all articles
Browse latest Browse all 1175

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>