$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Thomas Holenstein (tholenst_at_[hidden])
Date: 2000-09-06 10:02:29
Mark Rodgers writes:
 > I was thinking of adding something like
 > 
 >     template <class Arg1, class Arg2 = Arg1, class Result = Arg1>
 >     struct plus : std::binary_function<Arg1,Arg2,Result>
 >     {
 >         Result operator()(typename call_traits<Arg1>::param_type x,
 >                           typename call_traits<Arg2>::param_type y) const
 >         {
 >             return x + y;
 >         }
 >     };
Yes, that would be nice.  I don't like that I need to say the Result
explicit.  That is, I would like the following code to compile:
---------------------------------
#include <bunch_of_things>
struct one {};
struct two {};
struct three {};
three operator+(const one& x, const two& y) 
{
  three z; return z;
}
  
int main() 
{
  one a;
  two b;
  three c = my_plus<one, two>()(a,b);
}
---------------------------------------------------------
The result is completely deducable by the compiler, at least
in theory.  Its just the return type of operator+(Arg1, Arg2).
(Am I wrong here? -- i.e. can you have two different operator+?).
However, I don't see how to implement this. :-(
Thomas