class Functor { public: Functor(const int x): m_x(x) {} int operator()(int a) { return a + m_x; } private: int m_x; }; int main() { int x = 3; auto lambda = [=] (int a) { return a + x; }; Functor functor(x); volatile int y1 = functor(5); volatile int y2 = lambda(5); return 0; }