[Issue 3755] New: Regression forward declaration templates something
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Jan 30 06:15:22 PST 2010
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 at puremagic.com
ReportedBy: borislav.asdf at gmail.com
--- Comment #0 from borislav.asdf at 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: -------
More information about the Digitalmars-d-bugs
mailing list