$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Eric Friedman (ebf_at_[hidden])
Date: 2003-10-06 18:00:52
Eugene,
[Sorry if this message appears twice.]
E. Gladyshev wrote:
>
> Eric Friedman wrote:
> > In general, storage is on the stack.
>
> Sorry it is not completely clear to me.
Sorry, I guess "on the stack" isn't the exactly correct response. The point
is though that in general variant does *not* allocate on the heap.
A good conceptual way to think about the internals of a variant<T1,...,TN>
is as follows:
template <typename T1, ..., typename TN>
class variant
{
int which_;
union {
void* backup;
T1 t1;
...
TN tn;
} storage_;
...
};
Of course, the actual implementation is necessarily far more complicated.
However, the above *does* convey the basic storage allocation scheme.
HTH,
Eric