di 0.1.0
Loading...
Searching...
No Matches
expected_can_convert_constructor.h
Go to the documentation of this file.
1#pragma once
2
6
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> &&
14 (concepts::LanguageVoid<E> || (!ConstructibleFrom<vocab::Unexpected<E>, vocab::Expected<U, G>> &&
15 !ConstructibleFrom<vocab::Unexpected<E>, vocab::Expected<U, G> const> &&
16 !ConstructibleFrom<vocab::Unexpected<E>, vocab::Expected<U, G>&> &&
17 !ConstructibleFrom<vocab::Unexpected<E>, vocab::Expected<U, G> const&>) ));
18}
Expected(T &&) -> Expected< meta::UnwrapRefDecay< T >, void >