https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86252

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Another testcase, reduced from Boost.Rational:

template<typename T>
struct sfinae
{
  static const bool value = false;
  static T zero() { return T(); }
};

template<bool, typename T = void>
struct enable_if { typedef T type; }; 
template<typename T> struct enable_if<false, T> { };

struct Abstract {
  virtual void f() = 0;
};

struct X {
  template<typename T>
    X(const T&, typename enable_if<sfinae<T>::value>::type* = 0)
    { }
};

Abstract* a();

int f(const Abstract&);
void f(X);

int i = f(*a());

Reply via email to