【发布时间】:2017-11-17 14:49:55
【问题描述】:
在https://stackoverflow.com/a/9424211/3368959之后,我正在尝试比较三个数字:
#include <iostream>
int main() {
std::cout << std::min({2,5,1}) << std::endl;
return 0;
}
但是编译器给了我错误:
error: no matching function for call to ‘min(<brace-enclosed initializer list>)’
但是,使用时代码编译得很好
std::min(std::min(2,5),1)
但第一种方法应该适用于 c++11 标准。我可能做错了什么?
【问题讨论】:
-
我认为您实际上是指 C++11?
-
#include <algorithm>?至于为什么它使用 2-arg 版本工作,我只能假设您使用的标准库的实现以某种方式拆分了算法头,并且您通过iostream获得了一些传递包含,但这肯定是不保证工作。 -
@Lundin 是的,我已经编辑过了。我正在使用 CLion 并且 CMakeLists 包含以下行: set(CMAKE_CXX_STANDARD 11)
-
@BoBTFish 谢谢!解决了它=)