The title of the post sums my question up. I haven't been able to find any information the logic behind this anywhere - there is a lot of people bashing it, however.
Do you guys have any idea why they chose to implement it as such? I am by no means an experiences C++ programmer, and I knew that it was possible to use templates to pass arguments like that, but am I the only one who thinks it's a perversion of the whole concept of generic programming? For some reason, I don't think it makes sense to be able to pass templates anything but types.
I know boost has a bitset that does it dynamically, but I'm still curious as to the logic behind this design. It really limits its usage.