> On Jun 2, 2016, at 10:01 AM, Charlie Monroe <char...@charliemonroe.net> 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. > >> >>> 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 >> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution