2 extern "C" void abort ();
5 template <class T> T foo (T) { return T (); }
6 template <class T> T bar (T t) { return foo (t); }
9 struct S { S (int i = 0): i_ (i) { } int i_; };
12 /* template <> */ S foo (S) { return S (1); }
17 if (1 == N::bar (S()).i_)