forked from boostorg/optional
4e7405a233
When we detect that compiler supports rvalue references, we implement swap() in term of moves (as intuition suggests). Otherwise we fall back to old tricks with default constructor+swap