I'm not super familiar with C++'s memory model, especially since they have deprecated the notion of POD and replaced it with trivially constructable.
My rudimentary thought process is that you can't just "move" raw functions because there is probably some assumptions made that a C++ function's call-site isn't going to move around if it isn't owned by an object. Otherwise, the runtime would have to deduce the location of the function call every time.
Well, on second thought, is there any reason why an int function ptr should be any different from an int ptr?
Asking as someone who has been writing C++ on-and-off for a few years for games, school, etc. but never professionally.