On 03/11/2010 10:20 PM, bearophile wrote:
While looking for possible attribute problems to add to Bugzilla, I have seen 
the following D2 program compiles and runs with no errors or warnings:


static foo1() {}

static does not apply to free functions, I would guess this means the same as auto.

final foo2() {}
ref foo3() {}
enum void foo5() {}

Wow.

nothrow foo4() {}
pure foo6() {}

Would guess for auto here. Not tidy, as you say :)

static int x1 = 10;
static x2 = 10;

static here means 'known at compile time', I think.

- What is a static global function in D?

It means nothing, but I can't seem to find the documentation. It's just ignored.

- A final global function?
- Is that ref of void correct? (I think it is not)
- A enum of void function?

These are mysteries.

- What are global static variables in D?

variables evaluated at compile time, for example

int cfte_able_function() {
    return 14423 + 12341;
}

int other_function() {
    writeln("Not cfte");
    return 7;
}

static x1 = 123; //works
static x2 = cfte_able_function; //works;
static x3 = other_function; //cannot evaluate other_function() at compile time

As you say, these are odd issues indeed. :)

Reply via email to