// { dg-do run } // Copyright (C) 1999 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 21 Nov 1999 // make sure __FUNCTION__ and __PRETTY_FUNCTION__ work in templates #include #include static bool bad = false; template void f1 (T) { char const *function = __FUNCTION__; char const *pretty = __PRETTY_FUNCTION__; printf ("generic\n"); printf ("__FUNCTION__ %s\n", function); printf ("__PRETTY_FUNCTION__ %s\n", pretty); if (strcmp (function, "f1")) bad = true; if (strcmp (pretty, "void f1(T) [with T = float]")) // only for float instantiation bad = true; } template<> void f1 (int) { char const *function = __FUNCTION__; char const *pretty = __PRETTY_FUNCTION__; printf ("specialized\n"); printf ("__FUNCTION__ %s\n", function); printf ("__PRETTY_FUNCTION__ %s\n", pretty); if (strcmp (function, "f1")) bad = true; if (strcmp (pretty, "void f1(T) [with T = int]")) bad = true; } int main () { f1(0); // f1 f1(0.0f); // f1 return bad; }