Boost logo

Boost Users :

Subject: Re: [Boost-users] [value_initialized] when T is const
From: Niels Dekker - address until 2010-10-10 (niels_address_until_2010-10-10_at_[hidden])
Date: 2009-09-21 12:10:01


>> I guess we'd need to add an extra constructor that would copy from T
>> to value_initialized<T>, right? I'm not yet entirely sure about its
>> signature... IMO, all of them have their pro's and cons. For example:
>>
>> [1] value_initialized(const T&);
>> [2] explicit value_initialized(const T&);
>> [3] value_initialized(const T&, explicit_copy_t);
>> [4] explicit template <class U> value_initialized(const U&);
>> [5] template <class U> value_initialized(const U&, explicit_copy_t);

Edward Diener wrote:
> I do not really understand the need for the 'explicit_copy_t'
> in your possibilities.

If I recall correctly, there might be some rather exotic cases where
adding value_initialized(const T&) would cause ambiguity in a program
that would work before. The compiler might not be able to choose
between value_initialized(const T&) and value_initialized(const
value_initialized&) in some rare cases. But maybe I'm wrong... If I
can't find such a case before the end of the week, I'll assume that it's
a non-issue :-)

> I favor 2), although 1) is fine also. I see little reason for the
> templated constructor in practical use, especially since the current
> usage of value_initialized does not consider conversions to and from
> the T type in any of its functionality.

It /might/ be nice to allow conversion from U to value_initialized<T>
whenever there is a conversion from U to T. But if nobody needs it,
let's forget option [4] and [5] for the time being.

It would be helpful if you create a ticket regarding your request:
https://svn.boost.org/trac/boost/newticket

Kind regards,

  Niels


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