Я использую boost::any
в сочетании с boost::any_cast<>
для написания некоторого кода платформы, который должен принимать набор аргументов, почти как вызов функции, и преобразовывать их в массив типов boost::any
.
До сих пор все работало отлично, за исключением тех мест, где трудно предсказать, будет ли номер, который мне звонит, будет подписан или не подписан.Большая часть кода в нашем существующем продукте (на основе Windows) использует типы данных DWORD
и BYTE
для локальных переменных, поэтому, если используется одна из этих переменных, я получаю тип без знака.Однако, если константа жестко закодирована, скорее всего это будет простое число, и в этом случае она будет подписана.
Поскольку я не могу предсказать, следует ли мне делать any_cast<int>
или any_cast<unsigned int>
, 50В% случаев мой код, считывающий массив boost::any
, не будет работать.
Кто-нибудь знает, есть ли способ просто набрать число из boost::any
независимо от того, был ли оригинальный тип подписан или не подписан?