value ?
Наивный вариант — добавить в Button поле типа std::any, а в MakeKeyboard::MakeKeyboard сделать any_cast, угадав тип. Естественно, здесь есть очевидные проблемы и с семантикой и с производительностью Я уверен, что их можно избежать, если в Button::Button сохранить информацию об исходном типе через лупхолы, сохранить значение в хранилище байтов в виде поля, а в MakeKeyboard::MakeKeyboard достать тип лупхолами и сделать bit_cast к исходному типу. Но это требует значительных доработок и решения нескольких пачки мерзких языковых проблем с лупхолами, которые, тем не менее, мне кажутся решаемыми
Обсуждают сегодня