I wish all qualifiers were revisited with an eye for simplification
rikki cattermole
rikki at cattermole.co.nz
Tue Aug 4 18:05:34 UTC 2020
Alternative syntax (even though it is in the template parameters, it is
in fact erased and should not end in duplication):
T(U) first(void T=inout, U)(T(U)[] data) {
assert(data.length > 0);
return data[0];
}
--------
struct Foo(void Qual=inout) {
private int[] _payload;
this(Qual int[] payload) void(Qual) {
this._payload = payload;
}
@property Qual(int)[] payload() void(Qual) {
return this._payload;
}
}
--------
void assign(void Writable=inout, void Readable=inout)(ref Writable(int)*
a,Readable(int)* b,ref Writable(int)* c,Readable(int)* d) {
a=b;
c=d;
}
--------
Qual(int)* id(void Qual=inout)(Qual(int)* p) {
return p;
}
--------
static assert(is(typeof(&id!mutable)==int* function(int*)))
static assert(is(typeof(&id!immutable)==immutable(int)*
function(immutable(int)*)))
static assert(is(typeof(&id!const)==const(int)* function(const(int)*)))
That random mutable identifier tho...
More information about the Digitalmars-d
mailing list