
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