1 // PR c++/38877
2
3 template<class _T1, class _T2>
4 struct pair
5 {
6 typedef _T1 first_type;
7 typedef _T2 second_type;
8 _T1 first;
9 _T2 second;
pairpair10 pair () : first(), second() { }
pairpair11 pair(const _T1& __a, const _T2& __b)
12 : first(__a), second(__b) { }
13 };
14
15 template<class _T1, class _T2>
16 inline pair<_T1, _T2>
make_pair(_T1 __x,_T2 __y)17 make_pair(_T1 __x, _T2 __y)
18 {
19 return pair<_T1, _T2>(__x, __y);
20 }
21
22 template <int dim> class bar;
23
24 template <int dim>
25 pair<bar<dim> *, unsigned int>
foo(unsigned int position)26 foo (unsigned int position)
27 {
28 const pair<int,unsigned int> tmp;
29 return make_pair (new bar<dim>(tmp.first),
30 position);
31 }
32