У меня есть выражение для lambda, использующее код, например:
#include <vector>
#include <algorithm>
int main(){
std::vector<int> vi={3,1};
std::sort(vi.begin(),vi.end(),[](int x,int y){
return x<y;
});
return 0;
}
Для компиляции не требуется #include< functional>
, но если я использую переменную для хранения лямбда-функции:
#include <vector>
#include <algorithm>
#include <functional>
int main(){
std::vector<int> vi={3,1};
std::function<void()> compf=[](int x,int y){
return x<y;
};
std::sort(vi.begin(),vi.end(),compf);
return 0;
}
Затем мне нужно включить <functional>
для компиляции, почему? И почему sort()
уже не включает <functional>
?