template <class Rep2>
constexpr explicit duration(const Rep2& r);
Remarks: Этот конструктор не должен участвовать в разрешении перегрузки, если он не Rep2 может быть неявно преобразован в rep и
treat_as_floating_point_v<rep> есть true или
treat_as_floating_point_v<Rep2> есть false.
[ Example:
duration<int, milli> d(3); // OK duration<int, milli> d(3.5); // error
— end example ]
template <class Rep2, class Period2>
constexpr duration(const duration<Rep2, Period2>& d);
Remarks: Этот конструктор не должен участвовать в разрешении перегрузки, если при преобразовании не индуцируется переполнение и treat_as_floating_point_v<rep> есть true или оба они ratio_divide<Period2, period>::den есть 1 и treat_as_floating_point_v<Rep2> есть false. [ Note: Это требование предотвращает неявную ошибку усечения при преобразовании между целочисленными duration типами. Такая конструкция может легко привести к путанице в отношении стоимости duration. ] [ — end note Example:
duration<int, milli> ms(3); duration<int, micro> us = ms; // OK duration<int, milli> ms2 = us; // error
— end example ]