#include <iostream>
#include <functional>
#include <vector>
int add(int a, int b) { return a + b; }
using bound_add_t = decltype(std::bind(add, std::placeholders::_1, int()));
int main() {
std::vector<bound_add_t> vec;
int y = 2;
vec.emplace_back(add,std::placeholders::_1, y); // <- this causes the problem
vec.emplace_back(add,std::placeholders::_1, 2);
vec.emplace_back(add,std::placeholders::_1, 3);
for (auto &b : vec)
std::cout << b(5) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHZlY3Rvcj4KCmludCBhZGQoaW50IGEsIGludCBiKSB7IHJldHVybiBhICsgYjsgfQoKdXNpbmcgYm91bmRfYWRkX3QgPSBkZWNsdHlwZShzdGQ6OmJpbmQoYWRkLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIGludCgpKSk7CgppbnQgbWFpbigpIHsKICBzdGQ6OnZlY3Rvcjxib3VuZF9hZGRfdD4gdmVjOwogIGludCB5ID0gMjsKICB2ZWMuZW1wbGFjZV9iYWNrKGFkZCxzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIHkpOyAvLyA8LSB0aGlzIGNhdXNlcyB0aGUgcHJvYmxlbQogIHZlYy5lbXBsYWNlX2JhY2soYWRkLHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSwgMik7CiAgdmVjLmVtcGxhY2VfYmFjayhhZGQsc3RkOjpwbGFjZWhvbGRlcnM6Ol8xLCAzKTsKCiAgZm9yIChhdXRvICZiIDogdmVjKQogICAgc3RkOjpjb3V0IDw8IGIoNSkgPDwgc3RkOjplbmRsOwoKICByZXR1cm4gMDsgICAKfQ==