1// PR c++/34846 2 3template<typename, typename> struct __are_same { enum { __value = 0 }; }; 4template<typename _Tp> struct __are_same<_Tp, _Tp> { enum { __value = 1 }; }; 5template<typename, bool> struct __enable_if { }; 6template<typename _Tp> struct __enable_if<_Tp, true> { typedef _Tp __type; }; 7template<typename _Iterator, typename _Container> class __normal_iterator { 8public: 9 __normal_iterator(); 10 template<typename _Iter> 11 __normal_iterator( 12 const __normal_iterator<_Iter, typename __enable_if<_Container, 13(__are_same<_Iter, typename _Container::pointer>::__value) >::__type>& __i) 14 { } 15}; 16template<typename _Tp> class vector { 17public: 18 typedef _Tp* pointer; 19 typedef __normal_iterator<int, vector<_Tp> > iterator; 20}; 21void test() { 22 typedef int t; 23 vector<t*>::iterator x; 24 vector<t*>::iterator y = x; 25} 26