На мой вопрос есть несколько частей. Я изучал, как / когда использовать boost::any
. Мне было интересно, можно ли присвоить struct
переменной boost::any
.
Пример:
struct S {
int x;
};
S s;
s.x = 5;
boost::any var = s;
Мне кажется, это возможно, но это подводит меня к следующему вопросу. Если это правильное назначение, то как мне получить доступ к элементу данных x
? var
не является struct
типом, поскольку boost::any
.
Мой следующий вопрос не зависит от того, доступен ли элемент данных или нет. Тогда возникает вопрос: а что, если переменная a
имеет тип uint8_t
?
Пример: Редактировать: как указано в комментариях, приведенный ниже код поддерживает uint8_t, но он не печатается. См. uint8_t не может быть напечатан cout .
uint8_t a = 10;
boost::any b = a;
std::cout << boost::any_cast<uint8_t>(b);
Я обнаружил, что можно использовать boost::any_cast
, но не обнаружил, что он поддерживает неподписанные типы. Когда я попытался использовать boost::any_cast<uint8_t>()
, он не печатал, но не выдавал ошибку. Можно ли получить значение типа, например uint8_t
, используя boost
? Если так, то как?
Я буду продолжать читать больше документации по boost :: any , но если у кого-то есть понимание, подробности или примечания по этим вопросам или предмету, пожалуйста, напишите, как я хотел бы узнать больше о том, как это работает , Спасибо!