std::chrono::treat_as_floating_point
性病::时间::治疗[医]如[医]浮[医]点
Defined in header | | |
---|---|---|
template <class Rep> struct treat_as_floating_point : std::is_floating_point<Rep> {}; | | (since C++11) |
大std::chrono::treat_as_floating_point
特性有助于确定一个持续时间是否可以用不同的刻度周期转换为另一个持续时间。
两个持续时间之间的隐式转换通常取决于持续时间的滴答周期。但是,如果std::chrono::treat_as_floating_point<Rep>::value==true...
辅助变量模板
template< class Rep > inline constexpr bool treat_as_floating_point_v = treat_as_floating_point | | (since C++17) |
---|
例
二次
#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::period>;
static_assert(std::chrono::treat_as_floating_point<FpMilliseconds::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::milliseconds>(stop - start
// Note that implicit conversion is allowed here
auto f_ms = FpMilliseconds(stop - start
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';
}
二次
可能的产出:
二次
Running some timed piece of code...
Timing stats:
Time in milliseconds, using default rep: 2
Time in milliseconds, using floating point rep: 2.57307
二次
另见
二次
*。
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。