[英]boost::any how to check for a null/undefined value
我有一個 boost::any 對象,我想檢查它的類型。
typedef boost::any Value;
Value a = 12;
if(a.type() == typeid(int)) {
std::cout << boost::any_cast<int>(a) << std::endl;
}
當定義類型時這很容易,但是當類型未定義時我如何獲得相同的結果(即因為它的值尚未設置)。
Value b;
if(b is undefined) {
std::cout << "b is not defined" << std::endl;
}
如果沒有值, boost::any::empty
將返回true
。
#include "boost/any.hpp"
#include <iostream>
int main()
{
boost::any a = 42;
if (!a.empty())
std::cout << "a has a value\n";
boost::any b;
if (b.empty())
std::cout << "b does not have a value\n";
}
或者,您可以像在第一個示例中那樣使用boost::any::type
,如果沒有值,它將返回typeid(void)
:
boost::any a = 42;
std::cout << std::boolalpha << (a.type() == typeid(int)) << std::endl; // true
boost::any b;
std::cout << std::boolalpha << (b.type() == typeid(void)) << std::endl; // true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.