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.
}