This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ordering of constructors


Daniel Jacobowitz <drow@false.org> writes:

| On Fri, Apr 09, 2004 at 03:33:20PM +0200, Gabriel Dos Reis wrote:
| > Daniel Jacobowitz <drow@false.org> writes:
| > 
| > | On Fri, Apr 09, 2004 at 02:15:24PM +0200, Gabriel Dos Reis wrote:
| > | > For example, it can be something like
| > | > 
| > | >    A.H:
| > | >    struct A { some constructor ... };
| > | >    extern A a;
| > | >    void make_sure_a_is_constructed();
| > | > 
| > | >    A.C
| > | >    A a;
| > | > 
| > | >    void make_sure_a_is_constructed() { /* empty */ }
| > | > 
| > | > 
| > | > 
| > | >    B.H:
| > | >    #include "A.H"
| > | >    struct B { ... }
| > | > 
| > | >    B::B()
| > | >    {
| > | >       make_sure_a_is_constructed();
| > | >       // use a...
| > | >    }
| > | > 
| > | >    B.cc;
| > | >    B b; 
| > | >    
| > | > 
| > | > 
| > | > The call to make_sure_a_is_constructed(), will provoke the
| > | > initialization of a, before that function is executed.  
| > | 
| > | Er... for those of us ignorant, could you explain why this assures
| > | anything?
| > 
| > 3.6.2/3
| > 
| >   It is implementation-defined whether or not the dynamic
| >   initialization (8.5, 9.4, 12.1, 12.6.1) of an object of namespace
| >   scope is done before the first statement of main. If the
| >   initialization is deferred to some point in time after the first
| >   statement of main, *it shall occur before the first use of any
| >   function or object defined in the same translation unit as the
| >   object to be initialized*. 
| > 
| > (emphasis is mine).
| 
| Does that answer the question?  I don't believe that it does.  In this
| case, the initialization is _not_ deferred until after the first
| statement of main. 

Are you saying GCC never delays dynamic initializations until a point
int main()?

-- Gaby


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]