Здравствуйте, black_wolf_ltd
Может шаблоном?
template <class T>
struct Type2Type
{
typedef T OriginalType;
};
class some // наш класс
{
template <class A>
static void method(some & obj);
/* тут должены быть begin() и end() возвращающие итераторы */
};
struct rotate;
template <>
void some::method<rotate>(some & obj)
{
//
}
template <class T, class A>
void call_in_context(T & obj, Type2Type<A>)
{
std::for_each(obj.begin(), obj.end(), std::mem_fun_ref(&T::method<A>));
}
some obj;
call_in_context(obj, Type2Type<rotate>());