auto r = my_method();
if (std::holds_alternative<error_object>()) {
return r;
}
else ...
И так на каждом вызове по стеку вызовов. Месье любит извращения