[swift-evolution] 'T != Type' in where clause
Matthew Johnson
matthew at anandabits.com
Tue Feb 28 11:23:31 CST 2017
> On Feb 28, 2017, at 11:04 AM, Joe Groff via swift-evolution <swift-evolution at swift.org> wrote:
>
>
>> On Feb 27, 2017, at 4:34 PM, Rex Fenley via swift-evolution <swift-evolution at swift.org> wrote:
>>
>> I often find myself running into situations where I'll receive "Ambiguous use of..." for overloaded functions or operators. In every case these situations would be easily solved if I could specify "Generic != CertainType" in the where clause of one of the overloads so I can disambiguate the cases. Could this be added to language?
>
> Do you have a concrete example where you need this? It'd be good to know whether the types are ambiguous due to type checker bugs, or whether there's a principle by which they could be naturally ordered. Instead of overloading, can you do the type test via `if !(x is CertainType)` within a single implementation?
The best use case I can think of is if we had enum cases where the associated value is a subtype of the enum:
enum Result<T, E> where E: Error, T != E {
case some(T) -> T
case error(E) -> E
}
>
> -Joe
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
More information about the swift-evolution
mailing list