Boost logo

Boost :

Subject: Re: [boost] [variant] awkward recursion
From: Dave Abrahams (dave_at_[hidden])
Date: 2012-10-29 17:15:39


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. By
the time the containers are instantiated, the types are complete. :-)

-- 
Dave Abrahams
BoostPro Computing                  Software Development        Training
http://www.boostpro.com             Clang/LLVM/EDG Compilers  C++  Boost

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