return ConcreteErrorT::exception_ptr_type_info();
}
- std::exception_ptr to_exception_ptr() const {
- const auto* concrete_error = static_cast<const ConcreteErrorT*>(this);
- return concrete_error->to_exception_ptr();
- }
-
decltype(auto) static from_exception_ptr(std::exception_ptr ep) {
return ConcreteErrorT::from_exception_ptr(std::move(ep));
}
template <class ErrorVisitorT, class FuturatorT>
friend class maybe_handle_error_t;
+protected:
+ std::exception_ptr to_exception_ptr() const {
+ const auto* concrete_error = static_cast<const ConcreteErrorT*>(this);
+ return concrete_error->to_exception_ptr();
+ }
+
public:
template <class Func>
static decltype(auto) handle(Func&& func) {
return instance;
}
+ static auto exception_ptr() {
+ return make().to_exception_ptr();
+ }
+
template<class Func>
static auto handle(Func&& func) {
return [