问题标签 [stdany]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 为什么 std::any 没有 unsafe_any_cast?
我的本地版本的 Boost 标头 (1.56.0) 中定义了以下函数boost/any.hpp
,逐字复制:
即使在线文档甚至不承认它们的存在: http: //www.boost.org/doc/libs/1_59_0/doc/html/any/reference.html
我注意到std::any
似乎也不支持不安全的任何演员。
为什么没有引入 C++17 标准std::unsafe_any_cast
?
如果找不到确切的原因(或者如果根本没有提出),那么不提供对存储在std::any
对象中的值的不安全访问的最令人信服的论点是什么?
c++17 - 将多种类型存储到类成员容器中
我在这里阅读此 Q/A ,由于我的问题相似但不同,我想知道如何执行以下操作:
假设我有一个基本的非模板非继承类,称为Storage
.
我希望这个类有一个容器(无序的多图)是我倾向于的地方......它将std::string
为变量类型 T 保存一个名称 id。该类本身不会是模板。但是,添加元素的成员函数将是。要添加的成员函数可能如下所示:
然后,此函数将填充无序多图。但是,每次调用此函数时,每种类型都可能不同。所以我的地图看起来像:
如果类本身不是模板,我将如何使用模板、可变参数,甚至可能是元组、任何或变体来声明这样一个无序的多重映射?我不喜欢使用标准以外的 boost 或其他库。
我试过这样的事情:
但我似乎无法让 typedef 正确,因此我可以像这样声明它们:
c++ - 获取 std::any 的大小
有什么方法可以获取存储的数据的大小(以字节为单位)std::any
?我想出的唯一解决方法是查询其值的类型,std::any::type
并将结果与已知类型的列表进行比较,例如my_any.type() == typeid(T)
,大小为sizeof(T)
. 不幸的是,此解决方案仅在预先知道类型时才有效。
你知道有什么解决办法吗?
visual-studio-2017 - MSVC 2017 支持 std::any 吗?
我尝试编译一段代码:
但我收到此错误:
我想知道(如果可能的话)我怎样才能拥有这个功能。我在他们的网站上没有看到任何关于它的信息,但知道他们需要多少时间来更新它们也许可以完成
c++ - 我什么时候应该使用 std::any
由于引入了 C++17 std::any
。现在可以编写这样的代码
double 被分配给变量var
,而不是 astd::string
被分配给它。
为什么std::any
被介绍了?
我认为这违反了least astonishment rule
,因为我很难想到一种情况,可以用它来更清楚地表达我喜欢表达的东西。
有人可以给我一个很好的例子,什么时候std::any
是有益的。
c++ - std::any - 为什么它缺少这么多运算符?
我正在考虑将 std::any 用于类型擦除作为我正在构建的接口的一部分,我想知道为什么它缺少这么多运算符,比如“+”、“==”。我在这里修改了 Coliru ,在那里我将 std::any 扩展为可汇总和可打印到 ostream 中。这仅适用于现在持有 double 的任何人,但这个概念有效,它只是需要完成以支持所有基本数字数据类型(只要 lhs 和 rhs 是操作数的相同类型)的实现。
考虑到我能够在这么短的时间内扩展任何类似的东西,为什么 stl 实现在操作数方面如此有限?
任何想法表示赞赏。
c++ - 在 std::any 的 std::vector 中找到一个元素
我想检查向量中是否存在元素。我知道下面的代码会检查它。
但我有任何类型的向量。即std::vector<std::any>
我像这样将元素推入向量中。
所以我需要找出向量中是否存在字符串“A”。可以 std::find 帮助吗?
截至目前,我正在使用下面的代码来执行此操作
c++ - 在 std::map 中使用“自动”
我正在解析一个 JSON 文件,这些值可以由整数、字符串或浮点数组成。通常我有一个这样定义的地图:
问题是如果可以有不同的数据类型,我不清楚如何使用 map,我试过:
但我收到一个错误:
有没有办法可以将它与不同的数据类型一起使用,或者我是否需要定义一个可以包含不同数据类型的对象,例如:
还是有更好的方法来做到这一点?谢谢!
c++ - 无法移动 std::any
以下代码
编译失败,抱怨使用已删除的复制构造函数unique_ptr
。在模板参数中替换为此代码后std::any
,vptr
此代码将编译,因此问题显然在于any
如何强制std::any
移动而不是复制?
c++ - 带有 std::any 值的 unordered_map 不能使用 any_cast 字符串
我是 C++ 新手,我正在研究std::unordered_map
和std::any
. 我创建了一个示例演示,它生成一些虚拟数据,然后将它们插入到地图中。
之后(在注释掉的代码中)我使用any_cast
成功打印出值。
但是,在底部,您可能会看到我尝试以 0 成功检索特定密钥。我得到的错误是Bad any_cast
并且转换与我用于打印的代码完全相同(目前已被注释掉)。
如果这是一个愚蠢的错误,我很抱歉,但我很新。先感谢您。