What is the "Final"?

Rikki Cattermole via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Jan 20 04:02:12 PST 2015


On 21/01/2015 12:58 a.m., RuZzz wrote:
> Alexandrescu "The_D_Programming_Language"
> page 264: 7.1.10 Subtyping with structs. The @disable Attribute
> import std.stdio;
> ...
> unittest {
> auto a = Final!Widget(new Widget);
> a.print(); // Fine, just print a
> auto b = a; // Fine, a and b are bound to the same Widget
> a = b; // Error!
> // opAssign(Finai!Widget) is disabled!
> a = new Widget; // Error!
> // Cannot assign to rvatue returned by get()!
> }
>
> What is the "Final" in the code?

I'm guessing something along these lines:

struct Final(T) {
	private T value;
	alias value this;

	this(T value) {
		this.value = value;
	}

	@disable
	void opAssign(T)(T t) {}
}


More information about the Digitalmars-d-learn mailing list