Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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 is	defaulted.
	  2)  The  copy	 constructor is	defaulted (makes a bitwise copy	of the
       tick count).
	  3) Constructs	a duration with	r ticks. Note  that  this  constructor
       only participates
	  in overload resolution if const Rep2&	(the argument type) is implic-
       itly convertible
	  to rep (the type of this duration's ticks) and

				  *		  std::chrono::treat_as_float-
       ing_point<rep>::value is	true,
				    or
				  *		  std::chrono::treat_as_float-
       ing_point<Rep2>::value is
				    false.

	  (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)
	  4)  Constructs  a  duration by converting d to an appropriate	period
       and tick	count, as
	  if by	std::chrono::duration_cast<duration>(d).count(). In  order  to
       prevent
	  truncation  during conversion, this constructor only participates in
       overload
	  resolution if	computation of	the  conversion	 factor	 (by  std::ra-
       tio_divide<Period2,
	  Period>) does	not overflow and:

				  *		  std::chrono::treat_as_float-
       ing_point<rep>::value ==	true

	  or both:

				  * std::ratio_divide<Period2, period>::den ==
       1, and
				  *		  std::chrono::treat_as_float-
       ing_point<Rep2>::value ==
				    false.

	  (that	 is, either the	duration uses floating-point ticks, or Period2
       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
	  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		  2022.07.31	 std::chrono...on::duration(3)

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.0>

home | help