------- Additional Comments From pinskia at gcc dot gnu dot org  2004-12-22 
00:31 -------
One more thing, try linking in a different order and see that you get different 
order of constructing of 
the objects.

There is nothing we can do.

More more thing the testcase is equivent to:
#include <iostream>
class   C_CHILD{
public:
        C_CHILD();
        C_CHILD( const char* name);
        const char*                             m_name;

};
class C_ROOT{
public:
        C_ROOT();
        static C_CHILD          m_variable_root;
};
C_ROOT::C_ROOT(){
        std::cout<<"We needed you CTOR!"<<std::endl;
}
C_CHILD::C_CHILD(){
        m_name                          = NULL;
}
C_CHILD::C_CHILD(const char* name){
        std::cout<<"Constructor: "<<name<<std::endl;
}
class cCore {
public:
        cCore();
        ~cCore();
        static C_ROOT   m_database;
};
cCore::cCore() {        }
cCore::~cCore() {       }
#if 1
C_CHILD         C_ROOT::m_variable_root( "/" );
C_ROOT          cCore::m_database;
#else
C_ROOT          cCore::m_database;
C_CHILD         C_ROOT::m_variable_root( "/" );
#endif
int main(){
        return 0;
}



And switch the order of the two objects in the file, you will get a different 
behavior, though the 
requirement of that is defined IIRC but between different TU is undefined.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19123

Reply via email to