Even more simply: If you want copy and assignment semantics you can use a pointer right away (which is what the wrapper does behind the scenes anyway, with a lot of fluff that's unnecessary here). The wrapper is only useful for cases in which we'd like to store "naked" references in containers etc. One could say that
foo
is a minimal reference wrapper, semantically.