> On Dec 16, 2015, at 11:47 AM, Kevin Ballard <ke...@sb.org> wrote:
>
> On Wed, Dec 16, 2015, at 11:42 AM, Joe Groff wrote:
>>
>>> On Dec 16, 2015, at 11:24 AM, Kevin Ballard via swift-dev
>>> <swift-dev@swift.org> wrote:
>>>
>>> On Wed, Dec 16, 2015, at 12:12 AM, Dave Abrahams wrote:
>>>>
>>>>> Come to think of it, what's the actual use-case for withUnsafePointer()?
>>>>
>>>> I'm not sure we still have one that isn't covered by &x; that's my point.
>>>>
>>>>> If a value is mutable, you can already use &x or
>>>>> withUnsafeMutablePointer(), and if it's immutable, you can't call
>>>>> withUnsafePointer() today anyway. The proposed change would just make
>>>>> withUnsafePointer() into the equivalent of `var x = value;
>>>>> callSomethingWith(&x)`. The only reason to really want a
>>>>> withUnsafePointer() function is if it can give you an UnsafePointer to an
>>>>> immutable value without copying it, but we can't do that. I'm inclined to
>>>>> say we should just get rid of withUnsafePointer() entirely, at least
>>>>> until such time as Swift has a way to pass immutable values by-ref.
>>>>
>>>> I'm inclined to agree. Proposal?
>>>
>>> Sure, I'll write one up. I suspect that withUnsafePointer() /
>>> withUnsafeMutablePointer() are likely to be rarely used today, and most
>>> uses can probably be trivially replaced with just passing a &x ref, so this
>>> shouldn't be a big deal.
>>
>> We can't remove withUnsafe[Mutable]Pointer; as I mentioned to Dave, it's
>> necessary to persist a pointer for more than one immediate call.
>
> Rare cases like that can be covered by either declaring a nested function
> taking the pointer and calling it, calling an anonymous local closure of the
> right type, or even using withExtendedLifetime(&x) { (ptr: UnsafePointer<T>)
> in ... }.
These are all just withUnsafePointer with different spelling.
-Joe
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev