Цитата(Ivan_Kov @ Jan 26 2007, 22:02)

ихмо стоит попробовать определить операцию присвоения для типов device1_cmd и device2_cmd .
1)Пробовал. Или я что-то не так делал, но компилятор ругается "Оператор присваивания должен быть нестатическим членом".
2)Все равно оператор присваивания не решает проблемы, ибо не работает при инициализации структуры через {}
Цитата(zltigo @ Jan 26 2007, 21:43)

Ага, и именно по этой причине желаемые НЕЯВНЫЕ прообразования с этим типом не могут быть в принципе.
Ну почему? Я же определяя эту операцию преобразования явно указываю какие именно типы преобразовывать можно. Значит остальные
неявно нельзя.
Цитата(zltigo @ Jan 26 2007, 21:43)

Fuzzy logic хочется

Для пущей "безопасности" можно пробовать городить еще макрос для присвоения с наворотами - имя переменной в и CMDx намеспайсинг спрятать - прямо уже не присвоишь.
Почему fuzzy? Для классов это нормальная операция:
Код
class A
{
public:
A(int);
}
class B
{
public:
B(int);
B(A);
}
А макросы в данном случае - некрасивое решение.
неймспасинг тоже не проходит - пробовал. Мне надо "скрестить" command_t c device1_cmd и с device2_cm2, и чтобы при этом device1_cmd и device2_cmd не пересеклись.