static assert / static if
Lionello Lunesu
lio at lunesu.remove.com
Fri Feb 23 02:18:43 PST 2007
I'm confused:
template factorial(int n)
{
static assert(n>0);
static if (n == 1)
const factorial = 1;
else
const factorial =
n * factorial!(n-1);
}
int main()
{
return factorial!(0);
}
The static assert doesn't trip. If I remove the recursion, it works
fine, but with it the compiler stops with:
ct.d(8): template instance ct.factorial!(-3078) recursive expansion
At first I thought that the template is instantiated before the assert
is tested, but the static if IS tested before recursion, so why isn't
the assert? Is it a bug?
L.
More information about the Digitalmars-d-learn
mailing list