gpt4 book ai didi

c++ - 在没有 RTTI 的情况下检查 std::any 的类型

转载 作者:行者123 更新时间:2023-12-01 14:42:13 25 4
gpt4 key购买 nike

我正在使用 std::any禁用 RTTI 和异常。它有效并且std::any_cast<T>()能够检测类型是否正确,如 std::any without RTTI, how does it work? 中所述. std::any::type()虽然在没有 RTTI 的情况下被禁用。

我想检查一下我的 std::any对象包含给定类型的值。有什么办法吗?

最佳答案

您可以将指针转换为您的任何值并检查结果是否为空:

#include <any>
#include <iostream>

int main( int argc, char** argv ) {
std::any any = 5;

if( auto x = std::any_cast<double>(&any) ) {
std::cout << "Double " << *x << std::endl;
}
if( auto x = std::any_cast<int>(&any) ) {
std::cout << "Int " << *x << std::endl;
}

return 0;
}

关于c++ - 在没有 RTTI 的情况下检查 std::any 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63524970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com