Interesting post. First you claim that I'm wrong in saying that, in Java, some data types are stack-only and some are heap-only. Then you claim that object types are heap-only and primitive types are stack-only.
Basically, I'm trying to figure out what sort of reasoning got you to think that RAII objects are stack-based only. One common confusion for people who write Java and C# is that C++ has no concept of stack- and heap-based data types, and I was wondering if you were confused by that. Evidently, I was wrong, since you are correct on how those types work. You are wrong in thinking I don't know about storage classes, of course. (Also, we're not going to get anywhere with claims of C++ expertise. I assumed your expertise was on a par with the accuracy of your claims.)
Because I'm annoyed, I'm going to point out that function arguments can also be moved, not copied, in some cases, and that your use of "auto" is not only obsolete (in C++) but also highly idiosyncratic. The committee decided "auto" could be repurposed because approximately nobody ever used it as a keyword, based on a very large survey of source code.
And where did you get that thing about putting "static" on function arguments? "static" can be used on member variables and functions (meaning they're class-based and not tied to any object), non-class variables (giving them static storage duration), or it can be used to specify internal linkage. It's not something that goes on function arguments.