如何将最小值和最大值放入函数中



我想做这段代码

auto f = player == color ? max : min;

其中playercolor是布尔值,minmax是库中C++标准函数。

但是我得到这个错误:error: overloaded function with no contextual type information

如何告诉编译器我想加载比较整数的最小值和最大值?

以下是重现错误的方法:

1(创建一个文件.cpp

2(粘贴这个:

int main() {
bool one = 1;
bool zero = 0;
auto f = one == zero ? std::min : std::max;
return 0;
}

3(编译g++ toto.cpp

4(运行它./a.out

5( 观察到与上述相同的错误

像这样的东西?

#include <algorithm>
int main() 
{
auto Max = [](int a, int b){return std::max(a, b);};
auto Min = [](int a, int b){return std::min(a, b);};
bool one = 1;
bool zero = 0;
auto f = one == zero ? Min : Max;
return 0;
}

我认为编译器根本无法推断出 std::max 和 std::min 的模板参数,当你这样写它时:

auto f = one == zero ? std::min : std::max;

最新更新