The reason this stayed was that no one noticed that you could technically use a lambda function without passing the this pointer as an argument of operator() by the time people noticed this trick this was the standard that everybody got used to in C++ 11 so they never decided to change it. If you want a more detailed explanation, check out the video here. video