如何使用 Howard Hinnant 的 date.h 单位打印 `chrono` 持续时间?

How do I print a `chrono` duration with units with Howard Hinnant's date.h?

我有以下玩具代码:

#include "date/date.h"
#include <iostream>

using namespace std;
using namespace chrono;

int main() {
    cout << microseconds(100);
};

但是,它不起作用,因为:

C2679: binary '<<': no operator found which takes a right-hand operand of type 'std::chrono::milliseconds' (or there is no acceptable conversion)

但是 docs for date.h 列出了规范:

template <class CharT, class Traits, class Rep, class Period>
std::basic_ostream<CharT, Traits>&
operator<<(std::basic_ostream<CharT, Traits>& os,
           const std::chrono::duration<Rep, Period>& d);

这将使用 get_units 输出适当的单位。

那么,如何正确使用这个重载的 << 运算符?

operator<<date 命名空间内。由于两种操作数类型都不是来自此命名空间,因此依赖于参数的查找将找不到它。

要使用它,您需要 using namespace dateusing date::operator<<

您的代码中的另一个问题是 microseconds 只能从整数类型而非浮点数构造。