// PR c++/49785
// { dg-do compile { target c++11 } }
// { dg-additional-options "-Wno-return-type" }

template <typename, typename ...> struct B { };
template <typename> class A;

template <typename R, typename ... S>
struct A <R (S ...)> : public B <R, S ...>
{
  struct C {};
  template <typename D> A (D, C = C ()) { }
  R operator () (...);
};

template <typename R, typename ... S, typename T>
auto operator >> (A <R (S ...)>, T)->A <R (S ...)>
{
  []() {};
}

int
main ()
{
  A <int (int, int)> a = [](int, int) {};
  auto b = []{};
  (a >> b) (3, 5);
}
