blob: 8e0fbe073fd8e092446e1dcf4706e47a1ab3f0dd [file] [log] [blame]
// Test that 'extern template' suppresses instantiations.
// Special g++ Options: -g -O
// Ignore the 'ld returned 1' message from collect2.
// excess errors test - XFAIL *-*-*
template <class T> void f (T) { }
extern template void f (int);
template <class T> struct A {
void f ();
};
template <class T> void A<T>::f () { }
extern template struct A<int>;
// These functions must be defined in a single line, so that, even if
// constants or pointers are placed in the code section (for example,
// on the SH), we still get the same line numbers.
void test_f_int () { f(42); } // ERROR - not instantiated
void test_A_int_f () { A<int> a; a.f (); } // ERROR - not instantiated
void test_f_double () { f (2.0); } // gets bogus error
void test_A_double_f () { A<double> b; b.f (); } // gets bogus error
int main ()
{
test_f_int ();
test_A_int_f ();
test_f_double ();
test_A_double_f ();
}