[swift-evolution] [Proposal] Improving operator requirements in protocols
Dave Abrahams
dabrahams at apple.com
Mon May 2 15:18:17 CDT 2016
Tony, thanks for writing this up!
on Mon May 02 2016, Tony Allevato <swift-evolution at swift.org> wrote:
> Other kinds of operators (prefix, postfix, assignment)
>
> Static operator methods have the same signatures as their global counterparts.
> So, for example, prefix and postfix operators as well as assignment operators
> would be defined the way one would expect:
>
> protocol SomeProtocol {
> static func +=(lhs: inout Self, rhs: Self)
> static prefix func ~(value: Self) -> Self
>
> // This one is deprecated, of course, but used here just to serve as an
> // example.
> static postfix func ++(value: inout Self) -> Self
> }
>
> // Trampolines
> func += <T: SomeProtocol>(lhs: inout T, rhs T) {
> T.+=(&lhs, rhs)
> }
> prefix func ~ <T: SomeProtocol>(value: T) -> T {
> return T.~(value)
> }
> postfix func ++ <T: SomeProtocol>(value: inout T) -> T {
> return T.++(&value)
> }
How does one distinguish between calls to a static prefix operator and a
static postfix operator with the same name?
--
Dave
More information about the swift-evolution
mailing list