// PR c++/46129
// The default argument for A<int>::B::operator() should not be required
template <class T>
struct A {
  struct B {
    void operator () (const T& d_ = f(T()) ) { }
  };
};
int main() {
  A<int>::B b;
}
// PR c++/46129
// The default argument for A<int>::B::operator() should not be required
template <class T>
struct A {
  struct B {
    void operator () (const T& d_ = f(T()) ) { }
  };
};
int main() {
  A<int>::B b;
}