If you need an alias with null sematics. Consider std::optional instead.

If required.

Whats about C &&? Only use it for implementing move constructors or move assignment operators or if you are implementing a template function that requires perfect forwarding. const C && does not make sense in any case.