Then how will you implement it?
Think of this:
```
SYSCLASS struct Accessor; // unmovable and uncopyable
extern SYSAPI Accessor (*access)();
int main() {
StoreAndGet<Accessor>(access());
}
```
We don't know what the function will do, and it's impossible to change the function. We only know that access() will construct a Accessor object and follow the calling convention, then we must call copy or move constructor, but in this case
we can't do it.
For your example, if a function returns a unmovable and uncopyable object means that you shouldn't construct it by existing objects in your code.