7namespace di::concepts::detail {
8template<
typename T,
typename E,
typename U,
typename G>
9concept ExpectedCanConvertConstructor =
10 (!ConstructibleFrom<T, vocab::Expected<U, G>> && !ConstructibleFrom<T, vocab::Expected<U, G>
const> &&
11 !ConstructibleFrom<T, vocab::Expected<U, G>&> && !ConstructibleFrom<T, vocab::Expected<U, G>
const&> &&
12 !ConvertibleTo<vocab::Expected<U, G>, T> && !ConvertibleTo<vocab::Expected<U, G>
const, T> &&
13 !ConvertibleTo<vocab::Expected<U, G>&, T> && !ConvertibleTo<vocab::Expected<U, G>
const&, T> &&
Expected(T &&) -> Expected< meta::UnwrapRefDecay< T >, void >