Boost logo

Boost :

From: Eric Friedman (ebf_at_[hidden])
Date: 2003-04-04 18:17:47

Gennadiy Rozental wrote:
> > > So what I want is
> > >
> > > typedef boost::variant<int const,std::string const> GlobalParameter;
> > >
> > > GlobalParameter input_socket( 12345 ); // localhost::12345
> > > GlobalParameter output_socket( "MultiplexorSocket" );
> What if variant is the member of the class template, and we want to
> support const type arguments? Why not implement const support if it does
> cost us too much and you agree that there exist possible usage cases?

I argue that top-level const type arguments are meaningless in the context
of variant. Given the example you provide:

  typedef boost::variant<int const, std::string const> GlobalParameter;

  GlobalParameter input_socket(12345);
  input_socket = 54321; // no way to prevent this!!

If there is no way to prevent the code above, then I see the allowance of
top-level const types as misleading, at best. Please help me understand your
view if you continue to disagree.

> But I feel more relaxed on this point now. Though I believe if variant
> will end up without const type support it should be clearly documented
> there is a way to implement variant constants in many cases.

We can put it in the docs, but it seems straightforward that a const variant
would, in fact, not allow modification. What reason would lead someone to
believe otherwise?


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