Boost logo

Boost Users :

From: Ovanes Markarian (om_boost_at_[hidden])
Date: 2008-04-25 05:23:02


Peter,

AFAIK operator += or operator -= signature must contain a return value. In
your case it can probably be void.

template<class U>
void operator+=(U offset)
{
...
}

...

Best Regards,
Ovanes

On Fri, Apr 25, 2008 at 10:41 AM, Peter <p.schregle_at_[hidden]>
wrote:

> Assuming I have a class like the following:
>
> template <typename T>
> struct point : boost::additive<point<T>, T>
> {
> T x_;
> T y_;
>
> explicit point(T x=0, T y=0) : x_(x), y_(y)
> { }
>
> operator += (T offset)
> {
> x_ += offset;
> y_ += offset;
> }
>
> operator -= (T offset)
> {
> x_ -= offset;
> y_ -= offset;
> }
> }
>
> Now I want to change the addition and subtraction operators to allow for
> different types using the following template
>
> class point ...
>
> template <typename U>
> operator += (U offset)
> {
> x_ += offset;
> y_ += offset;
> }
>
> template <typename U>
> operator -= (T offset)
> {
> x_ -= offset;
> y_ -= offset;
> }
>
> ...
>
> I cannot figure out how to write the proper syntax for the boost::additive
> class, so that it generates the proper additional operators for all type
> combinations. Is that possible, at all?
>
> Thanks, Peter
>
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net