What does ! mean?
rikki cattermole
rikki at cattermole.co.nz
Wed Sep 27 14:30:51 UTC 2017
There are two types of arguments in D. The runtime one (which you are
well aware of) and the compile time one. A compile time argument is a
constant passed in during construction of a symbol.
But here is the thing, it isn't just limited to functions, you can have
it on classes as well.
---
class Foo(bool b) {
bool get() { return b; }
}
void main() {
Foo!true v = new Foo!true;
assert(v.get);
}
---
Same logic going on.
---
bool get(bool b)() {
return b;
}
void main() {
assert(get!true == true);
}
---
It can do more than a simple boolean being passed in, but that is the
gist. Templates are wonderful (also read the spec!).
More information about the Digitalmars-d-learn
mailing list