diff --git a/src/utils/result.hpp b/src/utils/result.hpp index 75d0694..dea6e16 100644 --- a/src/utils/result.hpp +++ b/src/utils/result.hpp @@ -33,6 +33,16 @@ namespace detail { std::fprintf(stderr, "%s\n", unwrap_error().what()); } } + template< + typename U = T, + typename std::enable_if< + !std::is_same::type, Result>::value && + std::is_constructible::value && + !std::is_constructible::value, + int + >::type = 0 + > + Result(U&& u) : Result(value_type(std::forward(u))) {} Result(Result&& other) : active(other.active) { if(other.active == member::value) { new (&value_) value_type(std::move(other.value_));