Это, вероятно, не работает, потому что перечисления не являются реальными типами, я не думаю, что вы можете вообще перегружать функцию для определенного перечисления.
Вы можете выполнить то, что вы хотите, выполнив преобразование в char при сериализации любого объекта, содержащего ваш MyEnum_t. Вы также можете сделать то, что предложил Дэн, и инкапсулировать перечисление в первоклассном типе, для которого вы можете перегружать сериализацию. Что-то вроде:
class MyEnum_clone {
unsigned char v_;
MyEnum_clone(MyEnum_t v) : v_(v) {};
operator MyEnum_t() const {return MyEnum_t(v_); };
// serialization...
};
Это все еще, вероятно, не будет полностью прозрачным, хотя.
Однако я не понимаю, почему вас волнует, как тип сериализуется. Не стоит ли сериализовывать, что вам не нужно заботиться о внутреннем представлении сериализации, если вы можете правильно восстановить объект. Внутреннее представление выглядит как свойство архива.