Questions about initialization of array of objects
bearophile
bearophileHUGS at lycos.com
Sat Jan 12 14:23:13 PST 2013
Andrey:
> I think such words as "single" and "only" are more appropriate
> in your case.
>
> single static function();
Right, but we generally try to minimize the number of keywords.
"static static" is a special case of a more general feature,
@templated(), that is similar to the "utilizes" keyword discussed
here, in Figure 21:
"Minimizing Dependencies within Generic Classes for Faster and
Smaller Programs" by Dan Tsafrir, Robert W. Wisniewski, David F.
Bacon and Bjarne Stroustrup:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.155.1773
The "static static" is the same as an empty @templated():
int foo(T)() if (is(T == char) || is(T == dchar) || is(T ==
wchar)) {
@templated() dchar[] table = ['a', 'b', 'c'];
@templated() immutable val = someHeavyCTFE(10);
// uses table and val here
return 0;
}
Adapted from that Figure 21:
struct C(X, Y, Z) {
void f1() @templated(X, Z) {
// only allowed to use X or Z, not Y
}
void f2() {
// for backward compatibility, this is
// equivalent to: void f2() @templated(X,Y,Z)
}
class Inner @templated(Y) {
// only allowed to use Y, not X nor Z
}
}
@templated() (or @utilizes()) is much more flexible than "static
static". And I generally I'd like @templated() to be implemented
instead of "static static".
> Or, if the developers will finally allow to take advantages of
> the unicode: static², static³... :-)
Please, no :-)
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list