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.

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

Example
       // Run this code

	#include <chrono>
	#include <iostream>
	#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		  2024.06.10	  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.1.quarterly>

home | help