问题标签 [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,变体,基于它们的数组调用函数
给定一组函数,例如:
这涉及我对跨线程事件和通信的实验,因此它可能看起来不必要的深奥!
编辑:好的,例如,这是意图。显然它不会编译(模板解析发生在编译时,但我想确定在运行时调用哪个函数!):
c++ - boost::any? 列表中的多态运算符
假设我有一个类型列表,list<boost::any>
其中包含某种未知类型。现在假设我想对列表中的多态元素应用一些操作。在这种情况下,请考虑 + 运算符。假设我知道列表将始终包含一组支持 operator+ 的同质对象,并且我想获得在列表的每个元素之间应用 operator+(某种意义上的“总和”)的结果到一个新的 boost::任何。像这样的东西:
如果不枚举所有可能支持 operator+ 的可能类型,有没有办法做到这一点?我对疯狂的想法非常开放。
(我确实有这样做的正当理由......我正在实施解释器)
c++ - boost::任何比较值?
我有一个 boost::any 向量,并且想在这个向量中找到“any”的索引。
像这样的东西:
为此,我尝试使用以下方法比较 2 个任意值:
问题是,现在当我进行任播时,它只转换为特定类型,而不关心基本类型:
c++ - c++ boost::any 来定义我自己的 print ,
我正在努力寻找如何使用boost::any
来创建一个可以首先使用模板打印任何类型的打印功能。
我需要先定义print()
。我希望operator <<
对任何人都有真实的想法,这个想法很简单:为每个任何对象附加一个
printer<T>
具有合适 T 的类实例,并在值类型更改时更改此对象any
。第一个技术问题是打印机对象依赖于 T 而 any 不是(也不应该是)类模板。
请我真的需要今晚或明天的帮助我明天有截止日期,但我希望今晚继续努力。
c++ - boost::variant 和 boost::any 如何工作?
boost 库中的变体和任何内容如何在内部工作?在我正在进行的一个项目中,我目前使用标记的联合。我想使用其他东西,因为 C++ 中的联合不允许您使用带有构造函数、析构函数或重载赋值运算符的对象。
我查询了任何和变体的大小,并用它们做了一些实验。在我的平台中,variant 取其最长可能类型的大小加上 8 个字节:我认为它只是 8 个字节的类型信息,其余的是存储的值。另一方面,any 只需要 8 个字节。由于我在 64 位平台上,我猜任何人都只是持有一个指针。
Any 怎么知道它持有什么类型?Variant 如何通过模板实现它的功能?在使用它们之前,我想更多地了解这些类。
c++ - 访问类似于 boost::any 的类中的值
我正在boost::any
为教育目的制作一个简单的类,但我不知道如何访问存储的值。我可以完美地设置该值,但是当我尝试访问“持有人”类中的任何成员时,编译器只会抱怨在它派生的类中找不到该成员。virtual
由于模板,我不能将成员声明为。
以下是相关代码:
c++ - 使用 boost::any 时出现错误 C2451
使用 Visual Studio 2010 测试字符串时,我在 print() 中收到此错误:
c++ - 更好地处理 boost::program_options 中丢失/错误的键
当像下面这样的调用失败时,有没有办法知道涉及哪个键?
如果地图中缺少密钥,或者无法转换为 int,我会得到一个相当无用的 bad_any_cast,并且我不知道以下任何内容:
- 涉及的关键
- 存储的价值,或者即使它在那里。
- 涉及的类型
我找不到任何不涉及修改 boost 标头或将每个对上述内容的调用包装在 try..catch 块中的解决方案。我认为这是一个常见问题,所以也许其他人知道更好的方法。
c++ - 实现任何类似的类
我正在尝试模仿 boost::any 对于我的玩具语言,遵循以下问题的公认答案,
我可以有,
现在我想重载 + 所以我可以拥有,
但是在运行时我不知道 e1 是否会保存一个 int 或一个 double 但它会是数字。那么我该如何修改 const 以便它还保存一个变量,告诉我 Element 持有什么样的数字,以便我可以调用正确的 Get 方法。
我也在没有异常的微处理器上执行此操作,将 -fno-rtti 传递给编译器,并且不能使用 stdlib 或 boost。
c++ - 为什么 boost::any 没有“getter”?
usingboost::any
非常有用,但它没有 getter 非常令人沮丧,而且我们总是不得不使用any_cast
它来将它转换为我们想要的类型。但是为什么它没有这样的东西呢?在我看来,波纹管可能是有用的成员。有什么我看不到的坏事吗?
编辑:
我看到的唯一不好的事情是,这个 getter 需要有赋值运算符。