refRange and @disable this(this);

Jerry via Digitalmars-d digitalmars-d at puremagic.com
Wed Sep 14 05:39:16 PDT 2016


I got a range which disables copy construction and I want to loop 
the range within another loop using the same range.
So I thought I can mark the struct range with @disable this(this) 
and then use refRange to initialize the loop.

So with something like this:

void main()
{	
	auto valueRange = FooRange("123");
	foreach(ch; refRange(&valueRange))
		writeln(ch);
}


struct FooRange {
	@disable this();
	@disable this(this);
	this(string str) {
		this.str = str;
	}
	
	@property bool empty() { return str.empty; }
	@property dchar front() { return str.front; }
	void popFront() { str.popFront; }
	
private:
	string str;
}


But I get compile time errors messages saying:
std/range/package.d(8155,23): Error: struct app.FooRange is not 
copyable because it is annotated with @disable

It feels strange that refRange ever want to copy.
Bug or feature?



More information about the Digitalmars-d mailing list