Boost logo

Boost :

Subject: Re: [boost] [spirit] Support for one-pass iterators?
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2009-10-19 10:30:48


Stewart, Robert wrote:
> Christian Schladetsch wrote:
>> On Tue, Oct 20, 2009 at 3:06 AM, Andrey Semashev
>> <andrey.semashev_at_[hidden]>wrote:
>>> Christian Schladetsch wrote:
>>>
>>>> Sure, but this is basic C++. Before the ctor to grammar(...) is
>>>> invoked, the arguments to it have been evaluated. This requires
>>>> construction of its arguments.
>>> That is not true. The base class constructor is called _before_
>>> any members are constructed. Try it yourself.
>>>
>> I am not sure what you are referring to. Before the C++ compiler
>> passes a reference to something, it has constructed it. The example
>> you gave was of a ctor taking a reference. Before that ctor is
>> executed, I will personally guarantee that it and all it's base
>> classes have been constructed.
>
> You can pass a reference to a data member to a base class constructor
> in a derivate's initializer list. If the base class constructor
> tries to use the reference, it will result in undefined behavior.
> (I'm not commenting on the supposed Spirit problem suggested by the
> OP.)

That is exactly the case suggested by the Spirit2 docs.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk