www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 16695] New: variadic argument static array can't use template

https://issues.dlang.org/show_bug.cgi?id=16695

          Issue ID: 16695
           Summary: variadic argument static array can't use template arg
                    as size
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: code.viator gmail.com

struct X(size_t S)
{
    float[S] data;

    void set(T)(T[S] vals...)
    {
        foreach (i; 0 .. S)
            data[i] = float(vals[i]);
    }
}

void main()
{
    X!3 a;
    a.set([1,2,3]);
    a.set(1,2,3); // line 16
}


% rdmd bug_notvisible_ct_arg.d 
bug_notvisible_ct_arg.d(16): Error: undefined identifier 'S'
bug_notvisible_ct_arg.d(16): Error: template bug_notvisible_ct_arg.X!3LU.X.set
cannot deduce function from argument types !()(int, int, int), candidates are:
bug_notvisible_ct_arg.d(5):        bug_notvisible_ct_arg.X!3LU.X.set(T)(T[S]
vals...)
Failed: ["dmd", "-v", "-c",
"-of/tmp/.rdmd-1000/rdmd-bug_notvisible_ct_arg.d-2A14CCA7EDA1E925EDEE8C25A4D7639E/objs/bug_notvisible_ct_arg.o",
"bug_notvisible_ct_arg.d", "-I."]

% dmd --version
DMD64 D Compiler v2.072.0

system Linux 4.8.6-201.fc24.x86_64

--
Nov 16 2016