[swift-evolution] [Pitch] Add the DefaultConstructible protocol to the standard library

Xiaodi Wu xiaodi.wu at gmail.com
Mon Dec 26 15:19:11 CST 2016

On Mon, Dec 26, 2016 at 2:57 PM, David Sweeris via swift-evolution <
swift-evolution at swift.org> wrote:

> On Dec 26, 2016, at 11:35, Tony Allevato <allevato at google.com> wrote:
> Mathematically, identities are associated with (type, operation) pairs,
> not types alone.
> This conversation has put me in the column of "numeric types shouldn't
> have default initializers at all", personally.
> I'd agree, except sometimes you need a T, *any* T, for when you want to
> create a "pre-sized" array for stuffing results into by index:
> for i in ... {
>     a[i] = ...
> }
> Simply saying "var a =[T](); a.reserveCapacity()" doesn't cut it because
> it'll still crash if you try to store anything in a[i] without somehow
> putting at least i+1 elements in the array first.

If you have _no_ guarantees as to what T is besides that it can be
instantiated with T(), what's the point of having a [T] with not even a
single actual T? Surely, there is nothing you can do with a [T] with a
single placeholder T of which you have no knowledge other than it is a T?
Why would you not reserve the capacity for a [T] at the point when you have
at least one actual T?

- Dave Sweeris
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20161226/43de04d5/attachment.html>

More information about the swift-evolution mailing list