$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Eric Friedman (ebf_at_[hidden])
Date: 2003-10-28 01:45:14
Eugene,
E. Gladyshev wrote:
> Also, I mentioned it to Eric that the current
> implementation doesn't actually provide basic guarantees.
> He was going to look into that.
Are you referring to the following problem?
T f();
class my_type
{
T t_;
public:
my_type() { }
my_type(const my_type& other)
: t_( f() )
{
}
};
variant< int, my_type > v;
int main()
{
my_type m1;
my_type m2 = m1; // ok
v = m1; // potentially undefined: does f visit v?
}
If so, then yes, I've devised a solution for that problem, but it incurs
quite a costly run-time overhead (i.e., a backup copy of lhs content
required even when heap backup of lhs content is not).
A better solution, I believe, is simply to document that accessing a
variant *during* assignment will result in undefined behavior. That way,
unless the user really needs to do something like the above, such (IMHO,
excessive) overhead will be avoided.
If you're *not* referring the above problem, then I'd like to know when
else variant does not provide the basic guarantee.
Thanks,
Eric