samedi 14 mars 2020

is std::chrono::duration default initialized to 0

Is the d value below initialized (to 0 presumably) or uninitialized (unsafe to read)?

std::chrono::system_clock::duration d;

Documentation says default constructor is defaulted.

std library code below seems to suggest it is uninitialized as ultimately int64_t is a scalar, and scalar's default initialization is no initialization.

Is my understanding correct? It surprised me sightly as std::chrono::system_clock::time_point is initialized to 0.

    struct system_clock
    {
      typedef chrono::nanoseconds                   duration;
...
    /// nanoseconds
    typedef duration<int64_t, nano>         nanoseconds;

...
    template<typename _Rep, typename _Period>
      struct duration
      {
    typedef _Rep                        rep;
    typedef _Period                     period;

...

Aucun commentaire:

Enregistrer un commentaire