1// { dg-do assemble } 2// Testcase for proper unification of code involving references. 3 4template<class T> 5struct A 6{ 7 void foo(); 8}; 9 10template<class T> void A<T>::foo() { } 11 12template class A<int&>; 13 14const int& f1 (); 15int& f2 (); 16int f3 (); 17 18template <class T> void g1 (const T&); 19template <class T> void g2 (T&); 20template <class T> void g3 (T); 21 22int main() 23{ 24 g1 (f1 ()); 25 g1 (f2 ()); 26 g1 (f3 ()); 27 g2 (f2 ()); 28 g3 (f1 ()); 29 g3 (f2 ()); 30 g3 (f3 ()); 31} 32