on Thu Jun 02 2016, Matthew Johnson <[email protected]> wrote:
> On Jun 2, 2016, at 10:01 AM, Charlie Monroe <[email protected]> > wrote: > > Isn’t this a short-term concern? I thought that requirement was going away. > > AFAIK there are still concerns about ambiguity - [Int] - is it an array with > one element (Int.self), or is it [Int].self? > > IIRC Joe Groff was going to work on sorting out the remaining issues > but the plan is to move ahead eventually. FWIW, there is no such plan. A number of us would like to see something happen in this area, but we are waiting to see the results of Joe's work. > > For this reason, this proposal prefers using no-label calls for types > (otherwise they would have been ofType) and labeled calls for > values: > > print(sizeof(Int)) // works > print(sizeof(Int.self)) // works > > func withoutLabel<T>(thetype: T.Type) -> Int { return sizeof(T) } > func withLabel<T>(label label: T.Type) -> Int { return sizeof(T) } > > // Works > print(withoutLabel(Int)) > > // Works > print(withLabel(label: Int.self)) > > // Does not work > // error: cannot create a single-element tuple with an element label > // print(withLabel(label: Int)) > > So with this in mind: > > /// Returns the contiguous memory footprint of `T`. > /// > /// Does not include any dynamically-allocated or "remote" storage. > /// In particular, `size(X.self)`, when `X` is a class type, is the > /// same regardless of how many stored properties `X` has. > public func size<T>(_: T.Type) -> Int > > /// Returns the contiguous memory footprint of `T`. > /// > /// Does not include any dynamically-allocated or "remote" storage. > /// In particular, `size(of: a)`, when `a` is a class instance, is the > /// same regardless of how many stored properties `a` has. > public func size<T>(of: T) -> Int > > /// Returns the least possible interval between distinct instances of > /// `T` in memory. The result is always positive. > public func spacing<T>(_: T.Type) -> Int > > /// Returns the least possible interval between distinct instances of > /// `T` in memory. The result is always positive. > public func spacing<T>(of: T) -> Int > > /// Returns the minimum memory alignment of `T`. > public func alignment<T>(_: T.Type) -> Int > > /// Returns the minimum memory alignment of `T`. > public func alignment<T>(of: T) -> Int > -- E > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution > -- -Dave _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
