
John Maddock wrote:
I have a piece of boilerplate code that accepts a tuple (of any size) and prints out either a csv file or a boost::array C++ code conaining the data passed.
It allows me to output data for graphing, or matrixes of test data very quickly just by creating a short function that returns a tuple, and then passing that function to my boilerplate. If I want more columns of data I just increase the size of tuple by 1.
I suppose I could have used a vector instead, but it's less elegant somehow.
I've also used tuples in place of struct's whenever I have an API that needs to return more than 2 items. For example I have some root finding algorithms that accept a unary functor whose root is to be found: the functor returns a tuple containing the function evaluation, plus the first two derivatives. Using a tuple here simplified both implementation and documentation. Had I felt the need, I could have performed compile time dispatch to different algorithms based on how many derivatives were available (the tuples size).
Thanks John, that's very informative. Although a little bit of code would be excellent :-) I do have a question about the second application, I mean, don't you have to wait until runtime to know how many derivatives a function actually have? Or is it just that it can be known in the very scenario you mentioned?