问题标签 [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.
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... 它是什么?我该如何解决这个“铸造”操作?
c++ - boost::any 需要 RTTI 吗?
在 Boost 网站上,我没有找到有关 boost::any 的使用或 RTTI 的信息。
我在几个地方读到这是一个要求,但后来我构建了一个简单的测试项目,它在有和没有 RTTI 的情况下都可以构建。
那么,boost::any 和类似的类是否需要具有性能和内存问题的 RTTI?
templates - 从 boost::any 中的 boost::variant 中提取值的辅助函数
我在boost::variant
整个项目中使用不同的类型。例如我有
为了boost::variant
通过统一的接口传输这些不同的类型,我正在使用boost::any
. 例如:
现在A1
从这种情况下提取数据container
变得有点乏味。我必须明确写
我只是想知道,是否有可能实现这样的模板辅助函数:
但是在这里我真的很困惑要写入什么类型boost::any_cast
。
部分解决方案:
在重构了我上一个问题的答案的代码后,我能够得出以下问题的部分解决方案。
不幸的是,该解决方案仍有两个严重的缺陷。
首先,我不知道如何排除所有不能包含请求的类型boost::variant
的 s 。Variants
T
其次,我必须明确提及我可能的boost::variant
类型列表。我认为这个限制不像第一个那么严格。
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
,它没有任何错误。
为什么?
c++ - C++:如何创建一个存储任何类型向量的向量?
我想将任何类型的向量存储在另一个向量中。因此,例如,我有两个向量实例,“std::vector v1”和“std::vector v2”。我想把它们放入一个向量中。我已经尝试过这样的:
还有其他几种方法,但没有任何效果。你知道一个可能的解决方案吗?
谢谢!
c++ - 为什么 any_cast 函数重载不会导致歧义?
Boost<boost/any.hpp>
有:
(在其他变体中。)这种组合不应该在调用中引起歧义boost::any_cast<int>(my_any);
吗?
我问是因为如果我写这个程序:
我确实收到了关于歧义的投诉:
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
帮我解决我的问题吗?
我能想象的最好的解决方案是如下的宏:
但我怀疑这个解决方案是否可行。
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?
c++ - 地图中的不同键类型
对于特定要求,我想要一个带有不同类型键的地图。类似于 boost:any。(我有一个旧的 gcc 版本)
使用 boost 有可能吗?
预先感谢
c++ - boost::any 底层类型的比较器
我有一个用于标记字节流(std::vector<uint8_t>
)的结构。该流可以包含字节、字、双字、以空结尾的字符串和原始数据。
它似乎工作到我尝试检查单元测试中的值的地步。
IE:
给出一个错误
错误:'operator==' 不匹配(操作数类型是 'const boost::any' 和 'const int') if (!(expected == actual))
所以我在类中添加了一个比较器,仅用于 int:
但这并没有缓解这个问题。
我如何将底层类型与值进行比较,因为一旦我开始验证代码,我就需要能够比较值。
也将更boost::variant
适合我需要做什么?在我对两者的快速阅读中,它似乎any
更适合我的任务。