如果我将lambda作为参考参数传递给sort算法,那么它正在运行。但是当我将相同的lambda传递给stable_sort
时,它没有编译,我必须声明参数const
?为什么会这样?
// sort algorithm example
#include <iostream> // std::cout
#include <algorithm> // std::sort
#include <vector> // std::vector
using namespace std;
void print(std::vector<int> &vec)
{
for (auto i : vec)
{
cout << i << " ";
}
cout << endl;
}
int main() {
std::vector<int> myvector = { 32, 71, 12, 45, 26, 80, 53, 33 };
sort(myvector.begin(), myvector.end(), [](int &i, int &j)//working
{
return i < j;
});
stable_sort(myvector.begin(), myvector.end(), [](int &i, int &j)//not compiling
{
return i < j;
});
stable_sort(myvector.begin(), myvector.end(), [](const int &i, const int &j)//compiling
{
return i < j;
});
print(myvector);
return 0;
}
答案 0 :(得分:0)
现在有一个LWG问题提交请求等待发布 这个。我将在添加后返回。
GCC和LLVM都存在问题,但他们等待{sup> [3] 请求Library Working Group更改标准。