我想做这段代码
auto f = player == color ? max : min;
其中player
和color
是布尔值,min
和max
是库中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;