I am not a RealSense stream programming expert, so I apologize if my answer is not helpful. I spent a while carefully checking through your script and comparing sections of it to scripts on the internet.
I could find no examples where ijmap is used with the push_back instruction. Are you sure that it should not be iMap? I.e
Should your inputs be arrays instead of vectors maybe? I haven't done much with c++ so don't know if they're equivalent but it may be worth a try! Or does your working ProjectDepthToCamera call use vectors successfully? The only other thing I can think of is whether you've initialised your projection instance? (ie, you've called Device.CreateProjection())
Actually, it looks like you're giving the method a single PXCPoint by using ijmap instead of ijmap - in C# at least (may be different with C++) if you want to project a single point you need to give it an array with a single item in, not the point itself. Is that the issue?