Boost logo

Boost :

Subject: Re: [boost] [utility/value_init] boost::value_initialized<T> direct-initialized?
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2010-03-31 12:50:27


Niels Dekker - address until 2010-10-10 wrote:
>> Also, your initialized<T> does not have a default constructor. This
>> makes sense, but I'm just double-checking that this is a conscious
>> decision and not an oversight.
> No, it's an oversight, sorry! I did not test any code from my last mail!
> BTW I'm not entirely sure if the initialized(T const&) constructor
> would need an "explicit" keyword. What do you think? Should the
> following be forbidden?
> boost::initialized<int> i = 42;
> If so, we might as well make it even more explicit, by adding a "tag"
> parameter of type direct_initialized_t to the constructor, as I
> proposed before at so
> that users would have to explicitly specify that they want
> direct-initialization:
> boost::initialized<int> i(42, boost::direct_initialized);

I'd much prefer boost::initialized to simply forward constructor arguments.
The templated constructor should be explicit, because otherwise things

boost::initialized<std::vector<int> > v = 10;

would compile. IMHO, it's okay if implicit
conversions that would normally work for
the contained type don't work, since this errs
on the side of safety, but it isn't okay to make
all conversions implicit.

In Christ,
Steven Watanabe

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