Alexander Nasonov wrote:
> I agree that a->move(10, 10) is clearer then move()(a, 10, 10). One big
> plus of it is ability to overload move member-function: a->move(Point(10,
> 10)). You can't do that with move operation:
>   move()(a, 10, 10);
>   move()(a, Point(10, 10)); // error
> You have to implement two operations move_to_xy and move_to_point:
>   move_to_xy()(a, 10, 10);
>   move_to_point()(a, Point(10, 10)); // ok
> 
> But, looking at the single interface bottleneck and less clear
> implementation of supported operations, I prefer to use my-own move()(a,
> 10, 10).

One addition.
I always thought about dynamic_any as a concrete class and I never 
considered deriving from it. But you can:

struct moveable
  : dynamic_any::any<mpl::list<move_to_xy, move_to_point> >
{
    void move(int x, int y)
    {
        move_to_xy()(*this, x, y);
    }

    void move(const Point & point)
    {
        move_to_point()(*this, point);
    }
};


int main()
{
    moveable a = get_moveable();
    a.move(10, 10);
    a.move(Point(10, 10));
}

The problem is closed.

-- 
Alexander Nasonov
Remove minus and all between minus and at from my e-mail for timely response

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to