如何解决如果在命名空间中定义,为什么找不到 operator<<?
在下面的代码中,尝试将 time_point
打印到控制台时出现错误。如果我将 operator<<
移到 my_namespace
之外,它就会消失。为什么是这样?我必须在全局命名空间中定义我的 operator<<
函数吗?
#include <iostream>
#include <chrono>
#include <date/date.h>
namespace my_namespace {
std::ostream &operator<<(std::ostream &os,const std::chrono::system_clock::time_point &time_point) {
return os << date::format(
"%F %T\n",std::chrono::time_point_cast<std::chrono::milliseconds>(time_point));
}
}
int main() {
std::chrono::system_clock::time_point time_point{
std::chrono::milliseconds{1000}};
std::cout << time_point;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。