簡體   English   中英

boost::any 如何檢查空/未定義值

[英]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)

演示 2

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM