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

FreeBSD Manual Pages

  
 
  

home | help
std::chrono...ating_point(3)  C++ Standard Libary std::chrono...ating_point(3)

NAME
       std::chrono::treat_as_floating_point   -	  std::chrono::treat_as_float-
       ing_point

Synopsis
	  Defined in header <chrono>
	  template			   <class			  Rep>
       (since C++11)
	  struct treat_as_floating_point : std::is_floating_point<Rep> {};

	  The  std::chrono::treat_as_floating_point trait helps	determine if a
       duration	can be
	  converted to another duration	with a different tick period.

	  Implicit conversions between two durations normally depends  on  the
       tick period of
	  the  durations.  However, implicit conversions can happen regardless
       of tick period if
	  std::chrono::treat_as_floating_point<Rep>::value == true.

	 Helper	variable template

	  template< class Rep >
	  inline     constexpr	    bool      treat_as_floating_point_v	     =
       (since C++17)
	  treat_as_floating_point<Rep>::value;

Specializations
	  std::chrono::treat_as_floating_point may be specialized for program-
       defined types.

Example
       // Run this code

	#include <iostream>
	#include <chrono>
	#include <thread>

	void timed_piece_of_code()
	{
	    std::chrono::milliseconds simulated_work(2);
	    std::this_thread::sleep_for(simulated_work);
	}

	int main()
	{
	    auto start = std::chrono::high_resolution_clock::now();

	    std::cout << "Running some timed piece of code..." << '\n';
	    timed_piece_of_code();

	    auto stop =	std::chrono::high_resolution_clock::now();

	    // A floating point	milliseconds type
	    using FpMilliseconds =
		std::chrono::duration<float,	std::chrono::milliseconds::pe-
       riod>;

	    static_assert(std::chrono::treat_as_floating_point<FpMillisec-
       onds::rep>::value,
			  "Rep required	to be floating point");

	    // Note that implicit conversion is	not allowed here
	    auto  i_ms	 =   std::chrono::duration_cast<std::chrono::millisec-
       onds>(stop - start);

	    // Note that implicit conversion is	allowed	here
	    auto f_ms =	FpMilliseconds(stop - start);

	    std::cout << "Timing stats:	" << '\n';

	    std::cout << "  Time in milliseconds, using	default	rep: "
		      << i_ms.count() << '\n';

	    std::cout << "  Time in milliseconds, using	floating point rep: "
		      << f_ms.count() << '\n';

	}

Possible output:
	Running	some timed piece of code...
	Timing stats:
	  Time in milliseconds,	using default rep: 2
	  Time in milliseconds,	using floating point rep: 2.57307

See also
http://cppreference.com		  2022.07.31	  std::chrono...ating_point(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::chrono::treat_as_floating_point&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help