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 > <[email protected]> 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 > [email protected] > https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________ swift-users mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-users
