Andrej Mitrovic <[email protected]> wrote:
Which error message should I show?
I'm not sure what you're getting at. :)
[snip]
But anyway it's just an idea and I'm probably missing something
important, I haven't used D in a while..
I believe you are missing that more templates could bear the same
name, and they could all fail for varying reasons. In such a case,
do you print the error messages from 100 templates and let the
user sort through them, or do you show the error the compiler
currently shows?
I admit my example was flawed, or at least incomplete:
void foo( A )( A a )
constraint {
isBar!A;
}
void foo( B )( B a )
constraint {
isQux!B;
}
void main( ) {
int n;
assert( !isBar!int );
assert( !isQux!int );
foo( n );
}
The call to foo would match neither template, giving errors akin
to this:
test.d(15) Error: template instantiation foo!int failed.
test.d(3) Error: template constraint failed
test.d(6) Error: template constraint failed
Seems good for two or three templates, but I fear this would grow
quickly out of hand for more templates.
--
Simen