Boost logo

Boost :

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


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.


Boost list run by bdawes at, gregod at, cpdaniel at, john at