问题标签 [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.

0 投票
2 回答
110 浏览

c++ - 如何使用 std::any 将元素添加到 std::vector

我正在开发一个 C++17 项目,我正在使用std::any. 下面给出了一个最小的可重现示例,以供参考,解释我想要实现的目标。

从上面的例子可以看出,我有一个std::any对象,我正在使用std::any_cast将元素添加到向量中。我想将元素添加到lvalue名为 actual( ) 的向量vec中,但将元素添加到rvalue. 有没有办法将元素添加到名为vecusing的向量中std::any如果没有,那么还有其他方法可以做到这一点,例如使用std::variant或其他我可能不知道的方法。我正在寻找一种在任何版本的 C++(如 C++11 或 C++17 等)中执行此操作的方法。

在我的实际项目中,需要存储任何类型的对象。所以我在那里遇到了同样的问题。然后意识到出了什么问题(即,我们push_back在右值上使用),然后我将问题简化为一个最小的可重现示例并在这里问。

0 投票
1 回答
57 浏览

c++ - 如何使用 std::any 作为 mapped_type

我正在尝试根据这个答案解决昨天在 SO 上提出的问题

我已修改此处给出的代码以使用std::any而不是void*. 我目前拥有的代码如下:

问题是当我写

这不会将push_back元素添加到原始向量中,而是添加到原始向量中。

如何将元素添加到原始向量m_Properties.Streets等中m_Properties.Houses我尝试使用std::ref,但我无法使用std::ref.

0 投票
1 回答
32 浏览

c++ - 将数据从库传输到上层,然后再返回而不在其间命名

我需要从库中获取一些复杂的数据,然后在上层使用这些数据。数据由两部分组成:在评估数据 A 时,我得到了一些额外的数据 B,并且数据 B 应该“按原样”返回到库中,以便不再重新评估它。

所以为了简化这一点:我从库中获取数据 A 和数据 B,将两者都传输到上层,使用 A,但是我应该将数据 B 传输回库。

问题是(除了这个奇怪的架构)我不希望我的上层知道关于数据 B 的任何信息,那么我应该使用什么机制来避免在上层代码中定义特定于库的数据类型?数据应作为指针传递。

我正在考虑 void*,但 C++17 允许使用我不太了解的 std::any。我可以用std::unique_ptr<std::any>吗?还是只是std::any取而代之?

应该是这样吗?

0 投票
1 回答
44 浏览

c++ - 使用地图时未定义二进制比较

我一直在寻找一种将 astring[]作为地图值的方法,我发现了这个 Stack Overflow question。我试图使用该std::any类型来解决我的问题,但我得到了错误

binary '<': 'const _Ty' 未定义此运算符或转换为预定义运算符可接受的类型

这是我的代码:

0 投票
1 回答
40 浏览

unit-testing - 如何 gtest / gmock 函数接受 std::experimental::any 参数?

问题

我需要帮助来解决我的 gtest 1.10.0 版本的单元测试问题。当我尝试对涉及接受 std::experimental::any 参数的函数进行单元测试时,会引发异常并终止单元测试。

重现问题的步骤

覆盖我的测试场景的单元测试片段可在https://godbolt.org/z/Y7dvEsaPf 在 TestBoth 测试用例中,如果相邻提供 EXPECT_CALL 和实际函数调用,则不会引发异常并且测试用例执行成功。但是在我的实际项目代码中,我的测试函数调用了具有这两种数据类型的 send_data() 函数。

工具和操作系统版本 gtest 版本为 1.10.0 Ubuntu Linux 20.04

编译器版本

g++ (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 C++14

构建系统

cmake 版本 3.20.5

附加上下文

需要帮助或请直接到我可以询问此查询并得到解决的地方。