C++ 有没有办法从boost::any中得到一个整数;我不知道原始类型是有符号的还是无符号的
我正在使用C++ 有没有办法从boost::any中得到一个整数;我不知道原始类型是有符号的还是无符号的,c++,boost,boost-any,C++,Boost,Boost Any,我正在使用boost::any和boost::any_cast来编写一些框架代码,这些代码应该包含一组参数,就像函数调用一样,并将它们转换为boost::any类型的数组 到目前为止,一切都很顺利,除了在一些很难预测来电者给我的电话号码是有签名还是无签名的地方。我们现有产品(基于windows)中的许多代码使用DWORD和BYTE数据类型作为局部变量,因此如果使用其中一个变量,我将得到无符号类型。然而,如果一个常数是硬编码的,它很可能是一个简单的数字,在这种情况下,它将被签名 由于我无法预测是否
boost::any
和boost::any_cast
来编写一些框架代码,这些代码应该包含一组参数,就像函数调用一样,并将它们转换为boost::any
类型的数组
到目前为止,一切都很顺利,除了在一些很难预测来电者给我的电话号码是有签名还是无签名的地方。我们现有产品(基于windows)中的许多代码使用DWORD
和BYTE
数据类型作为局部变量,因此如果使用其中一个变量,我将得到无符号类型。然而,如果一个常数是硬编码的,它很可能是一个简单的数字,在这种情况下,它将被签名
由于我无法预测是否应该执行any_cast
或any_cast
,因此读取boost::any
数组的代码有50%的时间会失败
有人知道有没有一种方法可以从
boost::any
中提取一个数字,而不管原始类型是有符号的还是无符号的?没有一种方法<代码>boost::any执行最简单的类型擦除,其中类型必须完全匹配。您可以编写自己的boost::任何类似
的类来支持所需的附加功能。我不知道如何做到这一点
否则,您可以:
any_cast
throws,则切换到有符号路径。)any_cast
抛出已签名的,并强制用户处理boost::any
?如果您需要某种类型的列表,那么您可能希望使用boost::variant