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

gen*_*att 5 c++ std min c++11

/sf/answers/659694801/之后,我试图比较三个数字:

#include <iostream>

int main() {

    std::cout << std::min({2,5,1}) << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是编译器给了我错误:

error: no matching function for call to ‘min(<brace-enclosed initializer list>)’
Run Code Online (Sandbox Code Playgroud)

但是,代码在使用时编译得很好

std::min(std::min(2,5),1)
Run Code Online (Sandbox Code Playgroud)

但是第一种方法应该适用于 c++11 标准。我可能做错了什么?

gen*_*att 6

正如@BoBTfish建议的那样

为了使用template <class T> T min (initializer_list<T> il)一个需要包括这里<algorithm>提到的。