
2011/3/16 Howard Hinnant <howard.hinnant@gmail.com>:
On Mar 16, 2011, at 8:50 AM, Joachim Faulhaber wrote:
2011/3/15 Howard Hinnant <howard.hinnant@gmail.com>:
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