我怎么知道我的 `std::chrono::high_resolution_clock` 对应于 `steady_clock` 或 `system_clock` 或其他的别名?

How can I know my `std::chrono::high_resolution_clock` correspond to the alias of `steady_clock` or `system_clock`, or other?

如何知道我的 std::chrono::high_resolution_clock 对应于 steady_clocksystem_clock 或其他的别名?

许多网站和书籍都提供了使用 system_clock 的示例,这些示例可能会由于同步而返回,以衡量功能花费的时间。 我认为这不是衡量时间的好主意。 相反,我认为我们应该使用 std::chrono::steady_clock.

有时使用std::chrono::high_resolution_clock。 根据 URL https://en.cppreference.com/w/cpp/chrono/high_resolution_clock ,它说 "It may be an alias of std::chrono::system_clock or std::chrono::steady_clock, or a third, independent clock."

所以,我想知道如何查看我的 std::chrono::high_resolution_clock 对应的别名。 有什么想法吗?

直接来自 Sam Varshavchik 的评论。您可以使用 <type_traits> 中的 std::is_same 来检查两种类型是否相同。

检查chrono中三个标准时钟的示例如下:

#include <chrono>
#include <iostream>
#include <type_traits>

int main() {
    using namespace std::chrono;

    std::cout << std::boolalpha
        << std::is_same_v<system_clock, high_resolution_clock> << '\n'
        << std::is_same_v<system_clock, steady_clock> << '\n'
        << std::is_same_v<high_resolution_clock, steady_clock> << '\n'
    ;
}

Demo