我想做这段代码
auto f = player == color ? max : min;
其中player
和color
是布尔值,而min
和max
是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)观察到与上述相同的错误
答案 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;