在全局命名空间中重载不依赖于用户定义类型的标准定义类型的运算符是否格式正确?

Is it well-formed to overload an operator for a standard-defined type in global namespace that doesn't depend on a user-define type?

本文关键字:类型 定义 是否 运算符 格式 标准 全局 重载 依赖于 用户 命名空间      更新时间:2023-10-16

以下代码按照标准格式良好的程序吗?

std::ostream& operator<<(std::ostream& out, std::chrono::system_clock::time_point tp)
{
    return out << tp.time_since_epoch().count();
}

这不是标准库中定义的模板,也没有在命名空间 std 中定义,因此它似乎格式正确,但我可能会遗漏一些东西。

我在名为"程序约束">的部分中没有看到任何禁止定义像您这样的函数的内容。

我说,这样做是完全正确的。