// Test that 'static template' instantiates statics.
// Special g++ Options: -g -fno-implicit-templates

// Ignore the 'ld returned 1' message from collect2.
// excess errors test - XFAIL *-*-*

template <class T> struct A {
  static T t;
};
template <class T> T A<T>::t = 0;
static 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_int() { A<int>::t = 42; } // gets bogus error

void test_char() { A<char>::t = 42; } // ERROR - not instantiated XFAIL *-*-irix*
// Irix's default linker does not produce line numbers so XFAIL it.

int main ()
{
  test_int ();
  test_char ();
}
