Could you link to the spec for std::experimental::optional somewhere? What's the form of this operation in std::experimental::optional? Should we move towards matching that interface more precisely so we can one day remove our custom implementation? http://reviews.llvm.org/D5507