Boost logo

Boost :

Subject: Re: [boost] [variant] awkward recursion
From: Mathias Gaunard (mathias.gaunard_at_[hidden])
Date: 2012-10-29 19:09:16


On 29/10/12 22:15, Dave Abrahams wrote:
>
> on Mon Oct 29 2012, Agustín K-ballo Bergé <kaballo86-AT-hotmail.com> wrote:
>
>> On 29/10/2012 04:29 p.m., Dave Abrahams wrote:
>>> In the abstract, json looks like:
>>>
>>> struct null {};
>>> typedef std::map<std::string, value> object;
>>> typedef std::vector<value> array;
>>>
>>> typedef variant<
>>> null, std::string, double, object, array, bool
>>> > value;
>>
>> Keep in mind that instantiating a standard container with an
>> incomplete type will yield undefined behavior, and that `variant` has
>> to instantiate both `object` and `array` to know their size. In my own
>> JSON attempt I have used Boost.Containers, which do guarantee defined
>> behavior when instantiated with incomplete types.
>
> I haven't instantiated anything at that point in the code, though.

According to the code you provided, you do instantiate the std::vector
class template with an incomplete type in both the no_wrapper and
wrapper cases.


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