On 2/14/15 9:06 AM, Tobias Pankrath wrote:
I agree, but also for function should conditions that do not effect overloading go into static asserts.For example if I were to write an algorithm that works with forward ranges and can be optimized for random access ranges but needs assignable elements in any case: void foo(R)(R r) if(isForwardRange!R && !isRandomAccessRange!R) { static assert(hasAssignableElements!R, "informative error msg"); } void foo(R)(R r) if(isRandomAccessRange!R) { static assert(hasAssignableElements!R, "informative error msg"); }
That would impact cross-module overloading. -- Andrei
