Expected or Bug? struct range unmodified after foreach
Timon Gehr
timon.gehr at gmx.ch
Mon Nov 7 09:52:19 PST 2011
On 11/07/2011 12:26 AM, Jesse Phillips wrote:
> I'm sure if this was changed there would be other interesting behavior,
> such as arrays being consumed. And suggestions other than
>
> for(S s; !s.empty, s.popFront())...
>
> Example:
>
> void main() {
> S s;
>
> foreach(i; s) {
> assert(i == s.popCount); // Fail
> }
>
> assert(s.popCount == 10); // Fail
> }
>
> struct S {
> size_t popCount;
>
> auto empty() {
> if(popCount> 9)
> return true;
> return false;
> }
> auto front() { return popCount; }
> auto popFront() {
> popCount++;
> }
> }
Expected, s has value semantics.
for(S _s=s; !_s.empty(); _s.popFront()){
auto i = _s.front();
// assert(i == s.popCount()); // expected to fail.
}
More information about the Digitalmars-d-learn
mailing list