Я получаю исключение std :: __ 1 :: bad_function_call: std ::, когда выполняю приведенный ниже код.
Я попытался инициализировать std :: function в конструкторе и инициализировать ее напрямую, когда она определена как переменная класса. В обоих случаях я получаю вышеупомянутое исключение.
Обратите внимание, что если я определяю объект функции (класс с определенной функцией bool operator ()), код работает правильно. Как я могу записать лямбда в std :: function, чтобы не было выброшено исключение? Кроме того, что вызывает исключение в коде ниже?
#include <map>
using namespace std;
class foo {
public:
foo() {cmp = [](const int &a, const int &b){return a > b;};}
//function<bool(const int &a, const int &b)> cmp = [](const int &a, const int &b){return a > b;};
function<bool(const int &a, const int &b)> cmp;
map<int, int, decltype(cmp)> rbtree;
};
int main() {
foo* obj = new foo();
obj->rbtree[5] = 5;
obj->rbtree[1] = 5;
obj->rbtree[5] = 5;
}