used noexcept in a few places for Optional<> template