У меня есть карта действий, которые необходимо принять на определенный выбор,станд :: функция от инициализации станд :: привязки в списке инициализатора
struct option {
int num;
std::string txt;
std::function<void(void)> action;
};
void funct_with_params(int &a, int &b)
{
a = 3; b = 4;
}
int param1 = 1;
int param2 = 3;
Я хочу, чтобы инициализировать вектор тех, в новом списке инициализатора моды :
const std::vector<option> choices
{
{
1,
"sometext",
std::bind(&funct_with_params, std::ref(param1), std::ref(param2))
},
}
я не могу получить инициализации в векторе для функции для работы, есть способ прохождения std::bind
вектора в некотором роде?
Я смог сделать пример работы, используя выражение лямбда вместо связывания, есть ли что-то, чего я не вижу? Или это не правильный способ использования std::bind
?
Я использую C++ 11, так как я не могу перейти на более новый стандарт.
Я [не могу воспроизвести вашу проблему] (http://coliru.stacked-crooked.com/a/9abbe27406d74367). Какую ошибку вы получили? Что ты пытаешься сделать? – WhiZTiM
Я думаю, 'act_with_params' на самом деле' funct_with_params', но как и где вы объявляли 'param1' и' param2'? Пожалуйста, предоставьте [mcve]. – Quentin
какой компилятор? – stefaanv