aboutsummaryrefslogtreecommitdiff
path: root/test/compiler/StTerm-order/stterm-test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/compiler/StTerm-order/stterm-test.cc')
-rw-r--r--test/compiler/StTerm-order/stterm-test.cc117
1 files changed, 0 insertions, 117 deletions
diff --git a/test/compiler/StTerm-order/stterm-test.cc b/test/compiler/StTerm-order/stterm-test.cc
deleted file mode 100644
index 0054f7d..0000000
--- a/test/compiler/StTerm-order/stterm-test.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * The conversation with Matti Rintala on STLport forum 2005-08-24:
- *
- * Do you mean ISO/IEC 14882 3.6.3 [basic.start.term]?
- *
- * Yes. "Destructors (12.4) for initialized objects of static storage duration
- * (declared at block scope or at namespace scope) are called as a result
- * of returning from main and as a result of calling exit (18.3). These objects
- * are destroyed in the reverse order of the completion of their constructor
- * or of the completion of their dynamic initialization."
- *
- * I found a confirmation on the web that gcc may not strictly conform
- * to this behaviour in certains cases unless -fuse-cxa-atexit is used.
- *
- * Test below give (without -fuse-cxa-atexit)
-
-Init::Init()
-Init::use_it
-It ctor done <-- 0
-Init::use_it done
-Init ctor done <-- 1
-Init2 ctor done <-- 2
-It dtor done <-- 0
-Init2 dtor done <-- 2
-Init dtor done <-- 1
-
-
- * but should:
-
-Init::Init()
-Init::use_it
-It ctor done <-- 0
-Init::use_it done
-Init ctor done <-- 1
-Init2 ctor done <-- 2
-Init2 dtor done <-- 2
-Init dtor done <-- 1
-It dtor done <-- 0
-
-
- */
-#include <stdio.h>
-
-using namespace std;
-
-class Init
-{
- public:
- Init();
- ~Init();
-
- static void use_it();
-};
-
-class Init2
-{
- public:
- Init2();
- ~Init2();
-
-};
-
-static Init init;
-static Init2 init2;
-
-class It
-{
- public:
- It();
- ~It();
-};
-
-Init::Init()
-{
- printf( "Init::Init()\n" );
- use_it();
- printf( "Init ctor done\n" );
-}
-
-Init::~Init()
-{
- printf( "Init dtor done\n" );
-}
-
-void Init::use_it()
-{
- printf( "Init::use_it\n" );
-
- static It it;
-
- printf( "Init::use_it done\n" );
-}
-
-Init2::Init2()
-{
- printf( "Init2 ctor done\n" );
-}
-
-Init2::~Init2()
-{
- printf( "Init2 dtor done\n" );
-}
-
-It::It()
-{
- printf( "It ctor done\n" );
-}
-
-It::~It()
-{
- printf( "It dtor done\n" );
-}
-
-int main()
-{
- return 0;
-}