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

时间:2019-09-28 13:58:38

标签: c++

我想做这段代码

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

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

但我收到此错误:error: overloaded function with no contextual type information

如何告诉编译器我要加载用于比较整数的min和max?

这里是重现错误的方法:

1)创建一个文件toto.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)观察到与上述相同的错误

1 个答案:

答案 0 :(得分:1)

像这样吗?

#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;