У меня есть выражение для 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>?