如果在命名空间中定义,为什么找不到 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 (将#修改为@)