// PR c++/34846 template struct __are_same { enum { __value = 0 }; }; template struct __are_same<_Tp, _Tp> { enum { __value = 1 }; }; template struct __enable_if { }; template struct __enable_if<_Tp, true> { typedef _Tp __type; }; template class __normal_iterator { public: __normal_iterator(); template __normal_iterator( const __normal_iterator<_Iter, typename __enable_if<_Container, (__are_same<_Iter, typename _Container::pointer>::__value) >::__type>& __i) { } }; template class vector { public: typedef _Tp* pointer; typedef __normal_iterator > iterator; }; void test() { typedef int t; vector::iterator x; vector::iterator y = x; }