Если имеется в виду, что тебе нужно, чтобы одноимённые члены перечислений преобразовывались друг в друга, то можно немного подправить код из
Копирование по маскеАвтор: Tonal-
Дата: 22.12.07
.
Т.е. для одного из перечислений переопределяешь свойства
struct enum_trait<NS1::Color> {
#define enum_val_type(enum_val_name) \
typedef enum_val_traits(NS1::Color, fld_name) \
enum_val_name##_type;
enum_val_type(red);
enum_val_type(green);
enum_val_type(blue);
typedef mpl::list<
red_type, green_type, blue_type
> fields_map;
};
Ну а в коде используешь каст:
NS2::Color val = enum_cast<NS2::Color>(NS1::red);
Тут надо ещё подумать как обрабатывать случаи, когда в приёмнике нет соответствующих имён.
Можно выбрасывать исключение, устанавливать в указанное значение, или в значение источника. Это можно определять стратегиями, или написать разные функции.

... << RSDN@Home 1.2.0 alpha rev. 786>>