// PR c++/38877 template struct pair { typedef _T1 first_type; typedef _T2 second_type; _T1 first; _T2 second; pair () : first(), second() { } pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) { } }; template inline pair<_T1, _T2> make_pair(_T1 __x, _T2 __y) { return pair<_T1, _T2>(__x, __y); } template class bar; template pair *, unsigned int> foo (unsigned int position) { const pair tmp; return make_pair (new bar(tmp.first), position); }