void foo(uint v:0, string op)()
{
pragma(msg, "specialized");
}
void foo(uint v, string op)()
{
pragma(msg, "unspecialized");
}
void main()
{
foo!(0u, "+")();
}
---
This will give a false error to be ambiguous.
It happens due to unintended sharing of global state when creating dummy expressions during partial ordering.