如何使用 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 date
或 using date::operator<<
。
您的代码中的另一个问题是 microseconds
只能从整数类型而非浮点数构造。
我有以下玩具代码:
#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 date
或 using date::operator<<
。
您的代码中的另一个问题是 microseconds
只能从整数类型而非浮点数构造。