#include struct object { int _id; object(int id) : _id(id) { } template void enumerate(F f) { for (int i=0 ; i<16 ; i++) { f(i); } } void test() { enumerate([this](int x) { this->ptr(x); }); } void ptr(int x) { printf("%d : %d\n", _id, x); } }; int main(int,char**) { object x(22); x.test(); return 0; }