I assume by "move the context into the body" you mean using GetWindowLongPtr? Why not just use a static wndproc at that point?
C++ lambdas are basically old style C++ functors that are compiled generated, with the calling address being the operator().
https://github.com/pjmlp/LambdaWndProc/blob/main/LambdaWndPr...