You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Possible library gap — opt.transform(id) on optional<copack<>> compiles as a no-op, but opt | fn::transform(id) is rejected: transform.hpp has no empty-copack arm mirroring transform_error.hpp:82-88, and no test pins it either way.
value_or on expected<void, copack<>> is a hard error (value_or.hpp:31-35)
conjoin should SFINAE-exclude carrier types from argument list - otherwise they get silently wrapped into a pack which is unlikely to be what the user expected. We cannot also refer to a .value() of a fallible carrier inside a function, as that could thrown an exception.
conjon and disjoin should have an overload taking only carriers, by requires clause.
Define expected_unit type alias (see also point 2)
opt.transform(id)onoptional<copack<>>compiles as a no-op, butopt | fn::transform(id)is rejected:transform.hpphas no empty-copack arm mirroringtransform_error.hpp:82-88, and no test pins it either way.value_oronexpected<void, copack<>>is a hard error (value_or.hpp:31-35)conjoinshould SFINAE-exclude carrier types from argument list - otherwise they get silently wrapped into apackwhich is unlikely to be what the user expected. We cannot also refer to a.value()of a fallible carrier inside a function, as that could thrown an exception.conjonanddisjoinshould have an overload taking only carriers, byrequiresclause.expected_unittype alias (see also point 2)operator==andoperator<=>topack