diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.other/singleton.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/singleton.C | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.other/singleton.C b/gcc/testsuite/g++.old-deja/g++.other/singleton.C deleted file mode 100644 index 075d83ac79a..00000000000 --- a/gcc/testsuite/g++.old-deja/g++.other/singleton.C +++ /dev/null @@ -1,38 +0,0 @@ -// This tests two things: -// 1. there is an annoying warning. -// singleton.C:26: warning: `class singleton' only defines private constructors and has no friends -// egcs fails to see that there is a public static accessor function. -// 2. the program crashes, because apparently the static variable s in -// singleton::instance() is considered constructed although the ctor -// exited via an exception. (crash changed to non-zero return here) - -class singleton { -public: - static singleton& instance() { - static singleton s; - return s; - } - int check() {return initialized;} - -private: - singleton() : initialized(1) { - if ( counter++ == 0 ) throw "just for the heck of it"; - initialized = 2; - } - singleton( const singleton& rhs ); - void operator=( const singleton& rhs ); - int initialized; - static int counter; -}; - -int singleton::counter; - -int main() -{ - while (1) { - try { - return singleton::instance().check()-2; - } catch (...) { } - } -} - |