 here!
    : boost::addable&lt; point&lt;T&gt;          // point + point
    , boost::subtractable&lt; point&lt;T&gt;     // point - point
    , boost::dividable2&lt; point&lt;T&gt;, T    // point / T
    , boost::multipliable2&lt; point&lt;T&gt;, T // point * T, T * point
      &gt; &gt; &gt; &gt;
{
public:
    point(T, T);
    T x() const;
    T y() const;

    point operator+=(const point&amp;);
    // point operator+(point, const point&amp;) automatically
    // generated by addable.

    point operator