【问题标题】:Error when using std::min "no matching function for call to ‘min(<brace-enclosed initializer list>)’"使用 std::min 时出错“没有匹配函数调用‘min(<brace-enclosed initializer list>)’”
【发布时间】: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 &lt;algorithm&gt;?至于为什么它使用 2-arg 版本工作,我只能假设您使用的标准库的实现以某种方式拆分了算法头,并且您通过iostream 获得了一些传递包含,但这肯定是不保证工作。
  • @Lundin 是的,我已经编辑过了。我正在使用 CLion 并且 CMakeLists 包含以下行: set(CMAKE_CXX_STANDARD 11)
  • @BoBTFish 谢谢!解决了它=)

标签: c++ c++11 std min


【解决方案1】:

作为@BoBTFish suggested:

为了使用template &lt;class T&gt; T min (initializer_list&lt;T&gt; il),需要包含&lt;algorithm&gt;,如here所述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多