Thread overview
Restrict Combination of moveFront and popFront to Suitable Element Types
Nov 01, 2014
Nordlöw
Nov 02, 2014
Marc Schütz
Nov 02, 2014
Nordlöw
May 11, 2016
Nordlöw
November 01, 2014
As a follow-up question to

http://forum.dlang.org/thread/jkbhlezbcrufowxtthmy@forum.dlang.org?page=3#post-zyuqclyjitbhavemmwto:40forum.dlang.org

discussing the motivation for a new range primitive stealFront that combines moveFront and popFront implemented at

https://github.com/nordlow/justd/blob/master/range_ex.d#L14

I then wonder if there's a way to check, using a type-trait, whether the value returned from moveFront is safe to use after popFront has been called on it. If so I want to restrict stealFront/Back with this trait.
November 02, 2014
On Saturday, 1 November 2014 at 21:26:49 UTC, Nordlöw wrote:
> As a follow-up question to
>
> http://forum.dlang.org/thread/jkbhlezbcrufowxtthmy@forum.dlang.org?page=3#post-zyuqclyjitbhavemmwto:40forum.dlang.org
>
> discussing the motivation for a new range primitive stealFront that combines moveFront and popFront implemented at
>
> https://github.com/nordlow/justd/blob/master/range_ex.d#L14
>
> I then wonder if there's a way to check, using a type-trait, whether the value returned from moveFront is safe to use after popFront has been called on it. If so I want to restrict stealFront/Back with this trait.

Not currently, but see my proposal:
http://wiki.dlang.org/User:Schuetzm/scope#scope.21.28const_....29
November 02, 2014
On Sunday, 2 November 2014 at 11:55:41 UTC, Marc Schütz wrote:
> On Saturday, 1 November 2014 at 21:26:49 UTC, Nordlöw wrote:
>> As a follow-up question to
>>
>> http://forum.dlang.org/thread/jkbhlezbcrufowxtthmy@forum.dlang.org?page=3#post-zyuqclyjitbhavemmwto:40forum.dlang.org
>>
>> discussing the motivation for a new range primitive stealFront that combines moveFront and popFront implemented at
>>
>> https://github.com/nordlow/justd/blob/master/range_ex.d#L14
>>
>> I then wonder if there's a way to check, using a type-trait, whether the value returned from moveFront is safe to use after popFront has been called on it. If so I want to restrict stealFront/Back with this trait.
>
> Not currently, but see my proposal:
> http://wiki.dlang.org/User:Schuetzm/scope#scope.21.28const_....29

Thanks. A trivial solution, but probably too great restriction, would be

auto stealFront(R)(ref R r) if (!hasIndirections!(ElementType!R))

a smaller restriction would be to use

auto stealFront(R)(ref R r) if (!hasUnsharedAliasing!(ElementType!R))

Can hasUnsharedAliasing be used in my case?

For detail see

- http://dlang.org/phobos/std_traits.html#hasIndirections
- http://dlang.org/phobos/std_traits.html#hasUnsharedAliasing
May 11, 2016
On Saturday, 1 November 2014 at 21:26:49 UTC, Nordlöw wrote:
> https://github.com/nordlow/justd/blob/master/range_ex.d#L14

Moved here

https://github.com/nordlow/phobos-next/blob/master/src/range_ex.d#L66