问题标签 [boost-any]

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 投票
1 回答
384 浏览

c++ - boost::any_cast 和 std::optional 的

我使用boost::any, 并且有一些函数可以检索这样的值,但可能会失败,所以它实际上会返回std::optional<boost::any>(嗯,现在是std::experimental::optional)。现在,没有可选的,我使用boost::any_cast(my_retrieved_any). 为了处理可选情况,我编写了以下内容:

但这不能编译(使用 Boost 1.58 和 GCC 4.9.3)。我得到:

这怎么可能?为什么论点不成立boost::any&?我尝试将变量设置为operand.value(),然后将其传递给any_cast——但这似乎也无济于事:

这让我:

一定有一些我没有考虑到的关于boost::any's... 它是什么?我该如何解决这个“铸造”操作?

0 投票
1 回答
958 浏览

c++ - boost::any 需要 RTTI 吗?

在 Boost 网站上,我没有找到有关 boost::any 的使用或 RTTI 的信息。

我在几个地方读到这是一个要求,但后来我构建了一个简单的测试项目,它在有和没有 RTTI 的情况下都可以构建。

那么,boost::any 和类似的类是否需要具有性能和内存问题的 RTTI?

0 投票
0 回答
128 浏览

templates - 从 boost::any 中的 boost::variant 中提取值的辅助函数

我在boost::variant整个项目中使用不同的类型。例如我有

为了boost::variant通过统一的接口传输这些不同的类型,我正在使用boost::any. 例如:

现在A1从这种情况下提取数据container变得有点乏味。我必须明确写

我只是想知道,是否有可能实现这样的模板辅助函数:

但是在这里我真的很困惑要写入什么类型boost::any_cast

部分解决方案:

在重构了我上一个问题的答案的代码后,我能够得出以下问题的部分解决方案。

不幸的是,该解决方案仍有两个严重的缺陷。

首先,我不知道如何排除所有不能包含请求的类型boost::variant的 s 。VariantsT

其次,我必须明确提及我可能的boost::variant类型列表。我认为这个限制不像第一个那么严格。

0 投票
2 回答
794 浏览

c++ - std::unordered_map引发烦人的编译错误

当我声明一个std::unordered_map<boost::any, boost::any>类型的变量时,它会引发烦人的编译错误。

例如,any.cc

编译上面的代码g++ any.cc -std=c++11 -I/usr/include/boost会发生很多错误,如下所示:

但是当我使用boost::unordered_map而不是std,它没有任何错误。

为什么?

0 投票
1 回答
1652 浏览

c++ - C++:如何创建一个存储任何类型向量的向量?

我想将任何类型的向量存储在另一个向量中。因此,例如,我有两个向量实例,“std::vector v1”和“std::vector v2”。我想把它们放入一个向量中。我已经尝试过这样的:

还有其他几种方法,但没有任何效果。你知道一个可能的解决方案吗?

谢谢!

0 投票
1 回答
168 浏览

c++ - 为什么 any_cast 函数重载不会导致歧义?

Boost<boost/any.hpp>有:

(在其他变体中。)这种组合不应该在调用中引起歧义boost::any_cast<int>(my_any);吗?

我问是因为如果我写这个程序:

我确实收到了关于歧义的投诉

0 投票
1 回答
188 浏览

c++ - 使用 Boost Preprocessor Boost Any to Boost Variant

在我的项目中,我正在使用boost::any并且boost::variant详尽无遗。为此,在我之前的问题Generic function to convert boost::any to boost::variantboost::any中设计了一个从to的通用转换例程。非常感谢帮助我的人。boost::variant

找到的解决方案对我来说没有任何问题,但有一些严重的缺点。完全模板化的解决方案产生的代码膨胀可能会令人望而却步,有时对于简单的转换是不必要的。(我没有提到编译时间。)

现在我有了让模板专业化为简单(非通用)转换工作的想法,但我发现必要的代码繁琐且容易输入错误。特别是,如果一个人必须一遍又一遍地完成这项任务。

下面的代码片段说明了这个问题。在典型应用程序中可能有多达 20 种或更多类型的图像!

更好的解决方案当然是宏,但不幸的是我无法使用boost-preprocessor. 我仍然缺乏技能,但我相信这是可以做到的。

有经验的人可以boost-preprocessor帮我解决我的问题吗?

我能想象的最好的解决方案是如下的宏:

但我怀疑这个解决方案是否可行。

0 投票
0 回答
110 浏览

c++ - variable return type in function that returns held object of boost::any

Say I have a class C with a field of type std::vector<boost::any>. I have index operator const boost::any C::operator[](const size_t i); but what if I wanted C::operator[](const size_t i) to return the object held by the any object at index i rather than the any-object itself? The function would need a variable return type... which is not possible. Is there some way by for example means of indirection to achieve this anyway?

0 投票
2 回答
1011 浏览

c++ - 地图中的不同键类型

对于特定要求,我想要一个带有不同类型键的地图。类似于 boost:any。(我有一个旧的 gcc 版本)

使用 boost 有可能吗?

预先感谢

0 投票
0 回答
229 浏览

c++ - boost::any 底层类型的比较器

我有一个用于标记字节流(std::vector<uint8_t>)的结构。该流可以包含字节、字、双字、以空结尾的字符串和原始数据。

它似乎工作到我尝试检查单元测试中的值的地步。

IE:

给出一个错误

错误:'operator==' 不匹配(操作数类型是 'const boost::any' 和 'const int') if (!(expected == actual))

所以我在类中添加了一个比较器,仅用于 int:

但这并没有缓解这个问题。

我如何将底层类型与值进行比较,因为一旦我开始验证代码,我就需要能够比较值。

也将更boost::variant适合我需要做什么?在我对两者的快速阅读中,它似乎any更适合我的任务。