FreeBSD Manual Pages
std::chrono...on::duration(3) C++ Standard Libarystd::chrono...on::duration(3) NAME std::chrono::duration::duration - std::chrono::duration::duration Synopsis constexpr duration() = default; (1) (since C++11) duration( const duration& ) = default; (2) (since C++11) template< class Rep2 > (3) (since C++11) constexpr explicit duration( const Rep2& r ); template< class Rep2, class Period2 > (4) (since C++11) constexpr duration( const duration<Rep2, Period2>& d ); Constructs a new duration from one of several optional data sources. 1) The default constructor. 2) The copy constructor. 3) Constructs a duration with r ticks. This overload participates in overload resolution only if all fol- lowing conditions are satisfied: * is_convertible<const Rep2&, Rep>::value is true. * Any of the following conditions is satisfied:^[1] * std::chrono::treat_as_floating_point<Rep>::value is true. * std::chrono::treat_as_floating_point<Rep2>::value is false. 4) Constructs a duration by converting d to an appropriate period and tick count, as if by std::chrono::duration_cast<duration>(d).count(). This overload participates in overload resolution only if no over- flow is induced in the conversion, and any of the following conditions is satis- fied:^[2] * std::chrono::treat_as_floating_point<Rep>::value is true. * All following conditions are satisfied: * std::ratio_divide<Period2, Period>::den is 1. * std::chrono::treat_as_floating_point<Rep2>::value is false. 1. That is, a duration with an integer tick count cannot be con- structed from a floating-point value, but a duration with a floating-point tick count can be constructed from an integer value. 2. That is, either the duration uses floating-point ticks, or Pe- riod2 is exactly divisible by Period. Parameters r - a tick count d - a duration to copy from Example The following code shows several examples (both valid and invalid) of how to construct durations: // Run this code #include <chrono> int main() { std::chrono::hours h(1); // one hour std::chrono::milliseconds ms{3}; // 3 milliseconds std::chrono::duration<int, std::kilo> ks(3); // 3000 seconds // error: treat_as_floating_point<int>::value == false, // This duration allows whole tick counts only // std::chrono::duration<int, std::kilo> d3(3.5); // 30Hz clock using fractional ticks std::chrono::duration<double, std::ratio<1, 30>> hz30(3.5); // 3000 microseconds constructed from 3 milliseconds std::chrono::microseconds us = ms; // error: 1/1000000 is not divisible by 1/1000 // std::chrono::milliseconds ms2 = us std::chrono::duration<double, std::milli> ms2 = us; // 3.0 mil- liseconds } Defect reports The following behavior-changing defect reports were applied retroac- tively to previously published C++ standards. DR Applied to Behavior as published Correct behavior over- load (4) does for overload (4), std::ratio_divide<Period2, not LWG 2094 C++11 period>::num participate in might overflow when evaluating overload std::ratio_divide<Period2, period>::den resolution in this case LWG 3050 C++11 convertibility constraint used non-const use const lvalues xvalue instead See also operator= assigns the contents (public member function) http://cppreference.com 2024.06.10 std::chrono...on::duration(3)
NAME | Synopsis | Parameters | Example | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::chrono::duration::duration&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
