1 // PR c++/57043
2 // { dg-do link }
3 
4 template<typename D> struct complex { };
5 
6 template<typename Tp>
7 complex<Tp>
pow(const complex<Tp> & x,const complex<Tp> & y)8 pow(const complex<Tp>& x, const complex<Tp>& y) { return complex<Tp>(); }
9 
10 template<typename T, typename U>
11 struct promote_2 { typedef T type; };
12 
13 template<typename Tp, typename Up>
14 complex<typename promote_2<Tp, Up>::type>
15 pow(const complex<Tp>& x, const complex<Up>& y);
16 
17 complex<double> (*powcc)(const complex<double>&, const complex<double>&) = pow;
18 
main()19 int main() {}
20