如果 std::any 中存储的值的类型与目标类型不匹配,则会抛出 std::bad_any_cast 异常。
如果您不需要在unordered_map中进行运行时查找,那么第三个选项是将函数指针存储在指定的变量中。这样使用...
std::any_cast 不需要原始对象的类型 是否可以std::any_cast在不放入第一个模板参数(所覆盖的对象的类型any)的情况下使用?我尝试使用any_cast<decltype(typeid(toCast).name())>但没有成功。 还尝试从一开始就存储对象类型,但这也不起作用,因为变量无法存储类型。 5 C++ 的基本原则之一是所有对象的类型在编译...
data ="Hello World";// 下面这个转换是不对的,因为上面的data类型是const char*, 并不是stringstring s = std::any_cast<string>(data); std::any到底是怎么实现的 由于STL都是在头文件里实现的,所以可以直接到std::any的头文件<any>里去看一下源代码: any类有一个私有成员变量,是一个union: union{...
谢谢你在评论中指出正确的方法来使用std::any_cast。我创建了一个看起来像预期的那样工作的示例。
定义std::any_cast在失败时以值返回形式抛出的对象的类型。 成员函数 (构造函数) 构造新的bad_any_cast对象 (公开成员函数) operator= 替换bad_any_cast对象 (公开成员函数) what 返回解释字符串 (公开成员函数) std::bad_any_cast::bad_any_cast ...
1)Returns*any_cast<std::add_const_t<std::remove_reference_t<ValueType>>>(&operand). 2,3)Returns*any_cast<std::remove_reference_t<ValueType>>(&operand). 4,5)Ifoperandis not a null pointer, and thetypeidof the requestedValueTypematches that of the contents ofoperand, a pointer to th...
class bad_any_cast : public std::bad_cast; (library fundamentals TS) Defines a type of object to be thrown by the value-returning forms of std::experimental::any_cast on failure. Member functions(constructor) constructs a new bad_any_cast object (public member function) operator= repla...
usingT=/*some type*/;structS{boolis_initialized=false;alignas(T)unsignedcharmaybe_T[sizeof(T)];voidconstructor_the_T(intarg){assert(!is_initialized);new(&maybe_T)T(arg);is_initialized=true;}T&get_the_T(){assert(is_initialized);returnreinterpret_cast<T&>(maybe_T);}~S(){if(is...