Я пытаюсь передать связывание оператора () с функциональным объектом. Затем я хотел бы использовать этот функциональный объект в качестве пользовательского компаратора в карте, которую я объявляю. Но я получаю следующую ошибку компиляции
ошибка C3867: 'Comparator :: operator ()': нестандартный синтаксис; используйте '&'
создать указатель на член
1>
ошибка C2672: 'std :: bind': не найдена соответствующая перегруженная функция
ошибка C2923: «std :: map»: «предикат» недопустимый тип шаблона
аргумент для параметра '_Pr'
Я не хочу использовать выражения lamda
Код, который я написал, следующий:
#include "pch.h"
#include <algorithm>
#include <functional>
#include <iostream>
#include <map>
struct Comparator : std::binary_function<int const &, int const &, bool>
{
template<typename T>
bool operator()(T const & a, T const & b)
{
return a < b;
}
};
int main()
{
std::cout << "Hello World!\n";
std::function<bool(Comparator&,int const &, int const &)> predict =
std::bind(Comparator::operator(), std::placeholders::_1,
std::placeholders::_2);
std::map<int, int, predict> x;
}