Hi Rudolf, What you are describing is not possible right now. The protocol PointType cannot be used as a type at all, because it has an associated type requirement. Also it is not clear what a ‘where’ clause attached to a type alias would mean.
There has been some discussion of ‘generalized existentials’ on the evolution list. So eventually, you might be able to say something like this: typealias Point = Any<Point : PointType where Point.Float == Float> Slava > On Sep 4, 2017, at 6:12 PM, Rudolf Adamkovič via swift-users > <swift-users@swift.org> wrote: > > I have the following ProceduralDrawing type: > > public struct ProceduralDrawing<Float, Point: PointType> where Point.Float == > Float { > // ... code that used Float and Point ... > } > > public protocol PointType { > associatedtype Float: FloatingPoint > var x: Float { get } > var y: Float { get } > } > > I would like to avoid adding Point as a generic parameter but the following > doesn’t work: > > public struct ProceduralDrawing<Float: FloatingPoint> { > // ERROR: 'where' clause cannot be attached to a non-generic declaration > typealias Point = PointType where Point.Float == Float > // ... code that uses Float and Point ... > } > > Is there a way to do this? If not, why? > > Thanks! > > R+ > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users