Boost logo

Boost Users :

From: Edward Diener (eldiener_at_[hidden])
Date: 2008-05-20 11:21:05


Niels Dekker - mail address until 2008-12-31 wrote:
> Edward Diener wrote:
>> I solved it in my template by having the data value for T be of type T
>> when T is top-level const, otherwise it is boost::value_initialized<T>
>> when T is not a top-level const. The mpl::if_ metafunction and
>> boost::is_const were used to generate the correct type, ala
>>
>> mpl::if_<boost::is_const<T>,T,boost::value_initialized<T> >::type
>> data;
>
> Okay, so your data is either a T, or a value_initialized<T>. I was
> wondering, do you use the fact that value_initialized<T> implicitly
> converts to reference-to-T?
>
> If your data is value_initialized<T>, you do boost::get(data) = arg.
> Would it be helpful to you to have an extra (explicit)
> boost::value_initialized<T> constructor, having const-reference to T as
> argument?

I have moved away from solving my problem based on const. This is
because in C++ there is the notion of 'read-only' ( const ) and
'read-write' ( no const ) whereas what I am designing also needs the
notion of 'write-only'. Therefore I have a second template parameter,
defaulting to 'read-write' to control that and I can specialize on that
parameter.

I may revisit the const issue in my design again, but for now I am
giving a compile time error when my T has top level const.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net