Hello guys, so I wanted to have a noncopyable range on the stack.
So my thoughts was to make it non copyable and use refRange whenever I want to use it with map and others.

But I got a compiler warning when doing so like this:

import std.range;

void main() {
        NonCopyable v;
        
        refRange(&v);
}

struct NonCopyable
{
        @disable this(this);
        
        int data;
        
        enum empty = false;
        void popFront() {}
        int front() { return data; }
}





With the error message:

C:\D\dmd2\windows\bin\..\..\src\phobos\std\range\package.d(8941): Error: struct reproduction.NonCopyable is not copyable because it is annotated with @disable C:\D\dmd2\windows\bin\..\..\src\phobos\std\range\package.d(8982): Error: mutable method reproduction.NonCopyable.front is not callable using a const object C:\D\dmd2\windows\bin\..\..\src\phobos\std\range\package.d(9649): Error: template instance std.range.RefRange!(NonCopyable) error instantiating reproduction.d(6): instantiated from here: refRange!(NonCopyable)




Is there any workaround?
Is this a bug?

Reply via email to