gpt4 book ai didi

c++ - 我可以在 STL 中禁用最小值、最大值吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:27 27 4
gpt4 key购买 nike

我使用了一个非常重要且不可触及的库。问题是库声明了 min, max 函数,所以当我在项目中包含 STL header 时,它们会发生冲突。如果可以的话,我想禁用 STL 中的最小值、最大值函数(如#define NOMNMAX)。如果我不能,有什么解决方案?

重要:对不起,这不是宏。两个函数是模板函数。

喜欢

template<T>
T min(const T& a, const T& b) { a < b ? a : b; }

提前致谢。

最佳答案

min 和 max 函数在 std 命名空间中定义,因此这段代码不应编译:

#include <algorithm>

int main() {
int n = min( 1, 2 );
}

如果是,则您的标准库不合规。此外,您重要且不可触及的库应该在命名空间中声明它的功能。如果不是。向供应商大声提示。

编辑: 由于这些函数大概在头文件中,您可以触摸它们。因此,一种破解方法是从 header 中删除模板并将其替换为以下内容:

using std::min;
using std::max;

虽然图书馆的作者为什么觉得有必要定义这些模板是任何人的猜测。

关于c++ - 我可以在 STL 中禁用最小值、最大值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3013406/

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