1// PR37314 rejects-valid, from w.doeringer
2template <typename T>
3struct A {
4  typedef __PTRDIFF_TYPE__ difference_type;
5  struct B {
6    typedef typename A<T>::difference_type difference_type;
7    difference_type operator-(B const&) const;
8    T t;
9  };
10};
11//
12
13template <typename T>
14typename A<T>::B::difference_type A<T>::B::operator-(B const&) const {
15  return -1;
16}
17
18//
19int main() {
20  A<int>::B i;
21  ++i.t;
22  return 0;
23}
24
25
26