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