Boost logo

Boost :

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. :-(


Boost list run by bdawes at, gregod at, cpdaniel at, john at