Boost logo

Boost :

Subject: Re: [boost] [chrono] Interoperability with ICL and common concepts
From: Joachim Faulhaber (afojgo_at_[hidden])
Date: 2011-03-16 10:47:37


2011/3/16 Howard Hinnant <howard.hinnant_at_[hidden]>:
> On Mar 16, 2011, at 8:50 AM, Joachim Faulhaber wrote:
>
>> 2011/3/15 Howard Hinnant <howard.hinnant_at_[hidden]>:
>>> On Mar 15, 2011, at 2:00 PM, Vicente Botet wrote:
>>>
>>> The current std::chrono::duration default constructor has this definition:
>>>
>>> constexpr duration() = default;
>>
>> hmm, I'm a little confused now
>>
>>> The rationale for this is to give the client and the Rep author as many options as possible:
>>>
>>> typedef std::chrono::duration<long long> D;
>>>
>>> D d1;  // d1.count() uninitialized - speed
>>> D d2 = D();  // d2.count() zero-initialized - safety if you believe 0 is safe
>>
>> This behavior is exactly what I desire
>>
>>> typedef std::chrono::duration<BigInt> CustomD;
>>>
>>> CustomD d3;  // d3.count() default constructed
>>
>> But the current implementation of Boost.Chrono does not work like that:
>>
>> typedef std::chrono::duration<long long> D;
>> D d2 = D();  // d2.count() UNINITIALIZED
>>
>> Will the semantics of
>>
>>> constexpr duration() = default;
>>
>> implement the proposed behavior with the new standard?
>
> Yes.  I'm not sure if any compiler yet implements =default for default constructors.  I'm hopeful that this feature will be widely implemented soon.  It has the semantics of defining a compiler-generated default constructor, which you can only do in C++03 if you don't have any other constructors declared.

That's good to hear, so my wishes for durations default ctor behavior
will be fulfilled at least in the future.

>>> D d2 = D(); // d2.count() zero-initialized - safety if you believe 0 is safe

BTW, I don't care for safety here at all. From my point of view I need
some minimal information from an unknown type T to be able to express
basic things like

0 < 1

where 0 and 1 are not available as literals or atomic expressions for T.

Regards,
Joachim

-- 
Interval Container Library [Boost.Icl]
http://www.joachim-faulhaber.de

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk