$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] boost::variant and "Current Approach: Temporary Heap Backup" vs "An Initial Solution: Double Storage"
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2009-09-30 17:58:03
AMDG
Peter Foelsche wrote:
> 1)
> boost::variant and "Current Approach: Temporary Heap Backup" vs "An
> Initial Solution: Double Storage"
> Please provide both solutions. A potential heap allocation may prevent
> certain application areas.
If any of the variant's types have a no-throw default constructor,
then no heap backup is used, because variant can construct
an object of that type if an exception is thrown. In practice,
this means built-in types, or boost::blank.
> 2)
> I also do not understand that exception safety requires that the
> variant is never empty (e.g. empty() returning always false).
> What is the use of calling the constructor (of which type btw?)
> if somebody creates an unintialized variant variable?
> Or: In the following piece of code is the std::string constructor
> being called?
>
> boost::variant<std::string, int> s;
A default constructed variant is initialized to hold an object of the
first of its types.
In Christ,
Steven Watanabe