$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Joel de Guzman (joel_at_[hidden])
Date: 2006-12-14 17:49:45
Thorsten Ottosen wrote:
> John Maddock wrote:
>> Weapon Liu wrote:
>>
>>> I personally very like this fancy facility, and that's why I present
>>> these mumbles here to annoy you guys( if so, my apologies go here:-))
>>> Any comments?
>>
>> I can give you one use I have for tuples:
> 
>> 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. 
> 
> I have used tuples in a similar manner, but I kinda think its not the 
> best to do; a named tuple would be more appropriate, or maybe just a struct.
> 
> What bothers me is the self-explanatory properties are lost; I can't 
> figure out what tuple element that means what by just looking at the 
> code. Is it
> 
>    tie(eval,dev1,dev2) = find_root(...)
> 
> or
> 
>    tie(dev1,dev2,eval) = find_root(...)
> 
> ?
> 
> Instead a struct would be somewhat unambiguous:
> 
>    template< class Float >
>    struct root_result
>    {
>      Float eval, dev1, dev2;
>    };
> 
>    root_result<float> r = find_root( ... );
You can probably use a fusion map if you want the elements named.
Regards,
-- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net