#include <algorithm>
#include <vector>
#include <functional>
class F {
int _a;
public:
F(const int a):_a(a) {}
int calc(const int x, const int k) const { return k * x + _a; }
};
struct Invoker{
std::vector<int> invoke(const std::vector<int>& v, const F& f) const
{
using std::placeholders::_1;
std::vector<int> ret(v.size());
std::transform(
v.cbegin(),
v.cend(),
ret.begin(),
std::bind(&F::calc, f, _1, 2));
return ret;
}
};
int main()
{
const F f(2);
std::vector<int> v{4, 5, 6};
const Invoker invoker;
invoker.invoke(v, f);
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CgpjbGFzcyBGIHsKICAgIGludCBfYTsKCnB1YmxpYzoKICAgIEYoY29uc3QgaW50IGEpOl9hKGEpIHt9CiAgICBpbnQgY2FsYyhjb25zdCBpbnQgeCwgY29uc3QgaW50IGspIGNvbnN0IHsgcmV0dXJuIGsgKiB4ICsgX2E7IH0KfTsKCnN0cnVjdCBJbnZva2VyewogICAgc3RkOjp2ZWN0b3I8aW50PiBpbnZva2UoY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgdiwgY29uc3QgRiYgZikgY29uc3QKICAgIHsKICAgICAgICB1c2luZyBzdGQ6OnBsYWNlaG9sZGVyczo6XzE7CgogICAgICAgIHN0ZDo6dmVjdG9yPGludD4gcmV0KHYuc2l6ZSgpKTsgICAgICAgCiAgICAgICAgc3RkOjp0cmFuc2Zvcm0oCiAgICAgICAgICAgIHYuY2JlZ2luKCksCiAgICAgICAgICAgIHYuY2VuZCgpLAogICAgICAgICAgICByZXQuYmVnaW4oKSwKICAgICAgICAgICAgc3RkOjpiaW5kKCZGOjpjYWxjLCBmLCBfMSwgMikpOwogICAgICAgIHJldHVybiByZXQ7CiAgICB9Cn07CgppbnQgbWFpbigpCnsKICAgIGNvbnN0IEYgZigyKTsKICAgIHN0ZDo6dmVjdG9yPGludD4gdns0LCA1LCA2fTsKICAgIGNvbnN0IEludm9rZXIgaW52b2tlcjsKICAgIGludm9rZXIuaW52b2tlKHYsIGYpOwogICAgCiAgICByZXR1cm4gMDsKfQ==