static static
Steven Schveighoffer
schveiguy at yahoo.com
Tue Nov 10 13:21:18 PST 2009
On Tue, 10 Nov 2009 16:15:26 -0500, bearophile <bearophileHUGS at lycos.com>
wrote:
> Yigal Chripun:
>
>> Regardless of usefulness (or good design) of such variables, this sounds
>> extremely dangerous. The compiler must not change semantics of the
>> program based on optimization. optimizing away such variables most
>> definitely alters the semantics.
>
> Maybe you have misunderstood, or I have explained the things badly. So I
> explain again.
>
> I have seen that LDC (when it performs link-time optimization, that's
> not done in all situations) keeps just one copy of constants inside the
> binary even if such constants are present in more than one template
> instance. In the situations where LTO is available I think this doesn't
> cause problems.
>
> Then I am half-seriously proposing a syntax like:
> T foo(T)(T x) {
> static static int y;
> // ...
> }
>
> Where the y is now static to (shared among) all instances of the
> templated function foo. This may be a little error-prone and maybe not
> that useful, but again here the compiler doesn't change the semantics of
> the program, because using a double static keyword the programmer has
> stated such intention.
What's the advantage over:
static int y;
T foo(T)(T x) {
// ...
}
-Steve
More information about the Digitalmars-d
mailing list