On Wednesday, 19 February 2014 at 22:46:45 UTC, Chris Williams
wrote:
When the template writes out the definition of the function, if the parameters can be interpreted during compile-time, then the foreach ( O(n) ) will be run by the compiler to detect the correct parameter and the function will be written out as just as a return statement in the body, without the loop. So during runtime, the function would have an O(1) runtime.

That's an optimization the compiler may do, but it's not
guaranteed. And `among` is not special in this regard.

[...]
The version which accepts three parameters will always run the same speed no matter what you call it - since it does the same thing exactly three times.

Well, it returns as soon as the value is found. So among(v, "b",
"c") finishes quicker when v is "b" than when it's "c" or "a". It
only does the same thing three times when it didn't find the
value after two times.

Reply via email to