Boost logo

Boost :

From: Eric Friedman (ebf_at_[hidden])
Date: 2003-10-06 17:54:29


Eugene,

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


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