Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
January 30, 2010 [Issue 3755] New: Regression forward declaration templates something | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=3755 Summary: Regression forward declaration templates something Product: D Version: 1.056 Platform: x86 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: borislav.asdf@gmail.com --- Comment #0 from borislav.asdf@gmail.com 2010-01-30 06:15:21 PST --- It used to work in 1.055 now it says bug.d(6): Error: declaration _D3bug1A6__initZ forward declaration bug.d(34): Error: template instance bug.Tuple!(_D3bug1A6__initZ) error instantiating bug.d(38): instantiated from here: InitsOf!(A) bug.d(54): instantiated from here: MinArgs!(func) ////////////////////////// ////////////////////////// ////////////////////////// struct A { } ////////////////////////// ////////////////////////// ////////////////////////// template ParameterTupleOf( Fn ) { static if( is( Fn Params == function ) ) alias Params ParameterTupleOf; else static if( is( Fn Params == delegate ) ) alias ParameterTupleOf!(Params) ParameterTupleOf; else static if( is( Fn Params == Params* ) ) alias ParameterTupleOf!(Params) ParameterTupleOf; else static assert( false, "Argument has no parameters." ); } template Tuple( TList... ) { alias TList Tuple; } template InitsOf(T...) { static if(T.length == 0) alias Tuple!() InitsOf; else alias Tuple!(T[0].init, InitsOf!(T[1 .. $])) InitsOf; } template MinArgs(alias func) { const uint MinArgs = MinArgsImpl!(func, 0, InitsOf!(ParameterTupleOf!(typeof(&func)))); } private template MinArgsImpl(alias func, int index, Args...) { static if(index >= Args.length) const uint MinArgsImpl = Args.length; else static if(is(typeof(func(Args[0 .. index])))) const uint MinArgsImpl = index; else const uint MinArgsImpl = MinArgsImpl!(func, index + 1, Args); } void func(A) { } void main() { const a = MinArgs!(func); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
February 01, 2010 [Issue 3755] Regression forward declaration templates something | ||||
---|---|---|---|---|
| ||||
Posted in reply to borislav.asdf@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=3755 borislav.asdf@gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |regression -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 26, 2010 [Issue 3755] Forward declaration templates something (D1 only) | ||||
---|---|---|---|---|
| ||||
Posted in reply to borislav.asdf@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=3755 Don <clugdbug@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Version|1.056 |D1 Summary|Regression forward |Forward declaration |declaration templates |templates something (D1 |something |only) Severity|regression |normal --- Comment #1 from Don <clugdbug@yahoo.com.au> 2010-07-26 08:25:02 PDT --- This is not a regression. The behaviour in 1.056 is the same as in 1.054. In 1.055, it didn't generate any error messages, but that was because the compiler was crashing! Interestingly the code works on 2.043 and later. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation