Ovanes,
 
sorry, I made an error when writing the sample. It should have been:
 
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)
    { }

    point & operator += (T offset)
    {
        x_ += offset;
        y_ += offset;
        return *this;
    }

    point & operator -= (T offset)
    {
        x_ -= offset;
        y_ -= offset;
        return *this;
    }
}

This part is working as it should.
 
My problem comes as soon as I make member templates out of the operators, for example like so
 
...
    template <typename U>
    point & operator += (U offset)
    {
        x_ += offset;
        y_ += offset;
        return *this;
    }

...
 
How do I write the boost::additive stuff so that it works with the operator template with all the types U that are instantiated?
Is that at all possible?
 
Peter
 
"Ovanes Markarian" <om_boost@keywallet.com> schrieb im Newsbeitrag news:a83c1a380804250223i4e3cbcdfu17871dfb0a585600@mail.gmail.com...
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@impuls-imaging.com> 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@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users


_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users