On 2012-08-09 15:02, Johannes Pfau wrote:
What annoys me is that as long the function only supported arrays, it didn't need templates _at all_. So template bloat for arrays = 0. But adding range support means the version dealing with arrays now has to be a template as well(which is probably a bug, can't overload template and non template function) and will produce extra code for every array type. I just think adding range support shouldn't cause the array code to change in any way.
A workaround is to make the non-template function to a template, with no arguments. This should only cause one instantiation:
void foo (T) (T t) if (/* some constraint making it not match "int" */); void foo () (int x); -- /Jacob Carlborg