36 static_assert(
sizeof...(Args) > 0);
38 if constexpr (
sizeof...(Args) == 1 && std::is_same_v<Head, yaclib::Unit>) {
40 }
else if constexpr (
sizeof...(Args) == 1 &&
41 (std::is_same_v<Head, yaclib::StopTag> || std::is_same_v<Head, std::exception_ptr> ||
42 std::is_same_v<Head, E>)) {
43 return Result<V>{std::unexpect, E{std::forward<Args>(args)...}};
44 }
else if constexpr (std::is_same_v<Head, std::in_place_t> ||
45 (
sizeof...(Args) == 1 && std::is_same_v<Head,
Result<V>>)) {
46 return Result<V>{std::forward<Args>(args)...};
48 return Result<V>{std::in_place, std::forward<Args>(args)...};