www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 17765] New: void initialisation of out parameters


          Issue ID: 17765
           Summary: void initialisation of out parameters
           Product: D
           Version: D2
          Hardware: x86
                OS: Mac OS X
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: iamthewilsonator hotmail.com

Out variables are always initialised, but when they are large static arrays
this incurs a performance penalty. For declaration of regular variables we have
= void to stop default initialisation. This does not work for out variables.
This ER suggests to make `i` valid syntax to suppress initialisation of the out

enum M = 2600;
void f() {
    float[M] mean = void; // works as expected, mean is left uninitialised

void g(out float[M][M] corr) // works but assigns twice
    corr[] = float.init; // compiler inserted

    // assign to each value of corr

// only assigns once but does not signal intention like out does
// also is valid to read from `corr` as opposed to write only like `g`
void h(ref float[M][M] corr) 
    // assign to each value of corr

//Error: found ')' when expecting '.' following void
void i(out float[M][M] corr = void)
    // assign to each value of corr

Aug 19 2017