
On Mon, Sep 13, 2010 at 5:33 PM, Pierre Morcello <pmorcell-cppfrance@yahoo.fr> wrote:
Concerning the 'default' values that you proposed, it is an interesting idea, though I am not sure I would have a use for it.
Here's an example of how default parameters might be useful (together with recursion): #include <contract/detail/local_function.hpp> #include <iostream> #include <sstream> #include <algorithm> #include <vector> int main () { std::vector<int> v; v.push_back(1); v.push_back(4); v.push_back(7); std::ostringstream factorials; CONTRACT_DETAIL_LOCAL_FUNCTION( (int) (factorial)( (int)(n) (bool)(recursion)(default)(false) (bound)((&factorials)) ) ) { int result = 0; if (n < 2 ) result = 1; else result = n * factorial(n - 1, true); // Recursive call. if (!recursion) factorials << result << " "; return result; } CONTRACT_DETAIL_LOCAL_FUNCTION_END(factorial) std::for_each(v.begin(), v.end(), factorial); std::cout << factorials.str() << std::endl; return 0; } However, in general, default parameters are used to overload a function API. Therefore, I think they make much more sense when used in the public API as supposed in local functions which are in nature part of the implementation. (BTW, I just got the code above to work. It required quite a bit of re-work to get the template parameter trick to function together with default parameters...) -- Lorenzo