使用 std::min 时出错“没有用于调用‘min(<brace-enclosed initializer list>)’的匹配函数”

问题描述 投票:0回答:2

以下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++ c++11 std min
2个回答
11
投票

作为@BoBTFish建议

为了使用

template <class T> T min (initializer_list<T> il)
,需要包括
<algorithm>
,如here所述。


-2
投票

它可以在我的电脑上运行。

你能添加这一行吗

std::cout<<__cplusplus<<endl;
,并检查输出。

© www.soinside.com 2019 - 2024. All rights reserved.