// { dg-do assemble } | |
// Testcase for proper unification of code involving references. | |
template<class T> | |
struct A | |
{ | |
void foo(); | |
}; | |
template<class T> void A<T>::foo() { } | |
template class A<int&>; | |
const int& f1 (); | |
int& f2 (); | |
int f3 (); | |
template <class T> void g1 (const T&); | |
template <class T> void g2 (T&); | |
template <class T> void g3 (T); | |
int main() | |
{ | |
g1 (f1 ()); | |
g1 (f2 ()); | |
g1 (f3 ()); | |
g2 (f2 ()); | |
g3 (f1 ()); | |
g3 (f2 ()); | |
g3 (f3 ()); | |
} |