微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果在命名空间中定义,为什么找不到 operator<<?

如何解决如果在命名空间中定义,为什么找不到 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 举报,一经查实,本站将立刻删除。