Option has been around for a while as boost::optional or now std::experimental::optional. Result is coming and has a reference implementation as boost::expected. There's also a type-erased option type, "any".
They're quite nice, especially with a few trivial additions for ergonomics.
This isn't about any of that. Any classes you would apply this technique to already have the desired semantics. The rule of zero just argues that you should not write copy/move/destructor functions outside of dedicated resource mananging classes, so that you can write other classes with zero special member functions (other than the main constructors).
Types-as-variables is a very good insight. When I'd write C++ function headers where I could omit parameter names without losing any clarity, it'd feel really nice, but the implication never rose to consciousness.
I started one a while ago, but I became fascinated by the "middle end" and bought a compiler textbook. Now I have SSA optmizations but no strings still.