internal/local template memebers

BCS ao at pathlink.com
Fri Oct 24 21:05:41 PDT 2008


A number of times while working with template code I have found that I need 
a variable inside a template but don't want the side effects of doing so. 
Specifically 1) having a tmp variable results in having to explicitly reference 
template members rather than being able to use the default member rule and 
2) the extra symbols seem to result in a substantial increases in the compile 
time memory usage.

The idea I'm floating would be to have a "local" storage class (or whatever 
keyword is chosen) that would only be accessible from within the template 
it is declared in:


template Foo(char[] str)
{
    local char[] first = str[0..$/2];
    local char[] last = str[$/2..$];

    const char[] Foo = Foo!(first) ~ Foo!(last); // legal; note not "Foo!().Foo"
    // const char[] Foo = Foo!(first).a ~ Foo!(last).a; // error a is not 
accessible
}

During compilation these variables would be computed, used and thrown away 
resulting in no long term memory cost.





More information about the Digitalmars-d mailing list