I have a custom class named Optional< T >. This class overrides the implicit operator, something like this:
public static implicit operator Optional<T>(T value)
{
    return new Optional<T>(value);
}
public static implicit operator T(Optional<T> value)
{
    return value.value;
}
Ok, till now all fine, the direct operations like these work:
Optional<int> val = 33; //ok
int iVal = val; //ok
But, this doesn't work:
Optional<Optional<int>> val = 33; //error, cannot convert implicitly
So I'm wondering how can be supported the previous case.
Cheers.