gpt4 book ai didi

c++ - 无法 typedef std::chrono::microseconds 覆盖其定义以更改其基础类型

转载 作者:太空宇宙 更新时间:2023-11-04 15:56:19 25 4
gpt4 key购买 nike

在 libc++ 中,std::chrono::microseconds 定义为

std::chrono::duration<long long, std::micro>

对于 64 位平台,long long 定义导致了与 int64_t 的许多冲突,因为代码早先已为此定义。

在 gnuSTL 中,早期的 std::chrono::microseconds 是用 int64_t 类型定义的。

我想将微秒的现有定义覆盖到 gnuSTL 版本,例如:

typedef std::chrono::duration<int64_t, std::ratio<1, 1000000>> std::chrono::microseconds;

or

#define std::chrono::microseconds std::chrono::duration<int64_t, std::ratio<1, 1000000>>;

我如何实现相同的目标。 Typdef 和 #define 在我们希望重新定义的一侧有 std::chrono:: 时出现语法错误,即 std::chrono::microseconds?

最佳答案

你不能。这些类型不属于您。这就是它们位于命名空间 std 中的含义。这不是您的代码。

如果您想定义自己的别名,请在您自己的命名空间中进行。

撇开其他不谈,您的工具链以这种特定方式实现标准库可能是有原因的。即使允许,您也可能无法在不重写标准库实现的其他 block 的情况下“让它像 gnuSTL 版本一样”。

如果您认为 libc++ 在 64 位平台上存在导致 std::chrono::microseconds 编译失败的错误,您可以向 libc++ 开发人员提出错误。但是,你应该首先确保你的理论是正确的,而且它在天文数字上是不可能的。检查您的其他代码以查找原因。

关于c++ - 无法 typedef std::chrono::microseconds 覆盖其定义以更改其基础类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57038172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com