问题标签 [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 投票
2 回答
1492 浏览

c++ - boost::any,变体,基于它们的数组调用函数

给定一组函数,例如:

是否可以采用某种变体类型的数组并根据其内容触发正确的功能?我的应用程序是我想将一组参数 X 传递给另一个进程,在那里我只能选择传递单个指针。我的想法是发送一个指向 std::vector<boost::any> 的指针,然后根据其内容以某种方式计算出上述哪些方法可以触发。

这涉及我对跨线程事件和通信的实验,因此它可能看起来不必要的深奥!

编辑:好的,例如,这是意图。显然它不会编译(模板解析发生在编译时,但我想确定在运行时调用哪个函数!):

0 投票
3 回答
473 浏览

c++ - boost::any? 列表中的多态运算符

假设我有一个类型列表,list<boost::any>其中包含某种未知类型。现在假设我想对列表中的多态元素应用一些操作。在这种情况下,请考虑 + 运算符。假设我知道列表将始终包含一组支持 operator+ 的同质对象,并且我想获得在列表的每个元素之间应用 operator+(某种意义上的“总和”)的结果到一个新的 boost::任何。像这样的东西:

如果不枚举所有可能支持 operator+ 的可能类型,有没有办法做到这一点?我对疯狂的想法非常开放。

(我确实有这样做的正当理由......我正在实施解释器)

0 投票
3 回答
1876 浏览

c++ - boost::任何比较值?

我有一个 boost::any 向量,并且想在这个向量中找到“any”的索引。

像这样的东西:

为此,我尝试使用以下方法比较 2 个任意值:

问题是,现在当我进行任播时,它只转换为特定类型,而不关心基本类型:

0 投票
4 回答
1287 浏览

c++ - c++ boost::any 来定义我自己的 print ,

我正在努力寻找如何使用boost::any来创建一个可以首先使用模板打印任何类型的打印功能。

我需要先定义print()。我希望operator <<对任何人都有真实的想法,这个想法很简单:为每个任何对象附加一个 printer<T>具有合适 T 的类实例,并在值类型更改时更改此对象any。第一个技术问题是打印机对象依赖于 T 而 any 不是(也不应该是)类模板。

请我真的需要今晚或明天的帮助我明天有截止日期,但我希望今晚继续努力。

0 投票
3 回答
31438 浏览

c++ - boost::variant 和 boost::any 如何工作?

boost 库中的变体和任何内容如何在内部工作?在我正在进行的一个项目中,我目前使用标记的联合。我想使用其他东西,因为 C++ 中的联合不允许您使用带有构造函数、析构函数或重载赋值运算符的对象。

我查询了任何和变体的大小,并用它们做了一些实验。在我的平台中,variant 取其最长可能类型的大小加上 8 个字节:我认为它只是 8 个字节的类型信息,其余的是存储的值。另一方面,any 只需要 8 个字节。由于我在 64 位平台上,我猜任何人都只是持有一个指针。

Any 怎么知道它持有什么类型?Variant 如何通过模板实现它的功能?在使用它们之前,我想更多地了解这些类。

0 投票
2 回答
627 浏览

c++ - 访问类似于 boost::any 的类中的值

我正在boost::any为教育目的制作一个简单的类,但我不知道如何访问存储的值。我可以完美地设置该值,但是当我尝试访问“持有人”类中的任何成员时,编译器只会抱怨在它派生的类中找不到该成员。virtual由于模板,我不能将成员声明为。

以下是相关代码:

0 投票
2 回答
2041 浏览

c++ - 使用 boost::any 时出现错误 C2451

使用 Visual Studio 2010 测试字符串时,我在 print() 中收到此错误:

0 投票
1 回答
782 浏览

c++ - 更好地处理 boost::program_options 中丢失/错误的键

当像下面这样的调用失败时,有没有办法知道涉及哪个键?

如果地图中缺少密钥,或者无法转换为 int,我会得到一个相当无用的 bad_any_cast,并且我不知道以下任何内容:

  • 涉及的关键
  • 存储的价值,或者即使它在那里。
  • 涉及的类型

我找不到任何不涉及修改 boost 标头或将每个对上述内容的调用包装在 try..catch 块中的解决方案。我认为这是一个常见问题,所以也许其他人知道更好的方法。

0 投票
1 回答
1091 浏览

c++ - 实现任何类似的类

我正在尝试模仿 boost::any 对于我的玩具语言,遵循以下问题的公认答案,

访问类似于 boost::any 的类中的值

我可以有,

现在我想重载 + 所以我可以拥有,

但是在运行时我不知道 e1 是否会保存一个 int 或一个 double 但它会是数字。那么我该如何修改 const 以便它还保存一个变量,告诉我 Element 持有什么样的数字,以便我可以调用正确的 Get 方法。

我也在没有异常的微处理器上执行此操作,将 -fno-rtti 传递给编译器,并且不能使用 stdlib 或 boost。

0 投票
2 回答
2004 浏览

c++ - 为什么 boost::any 没有“getter”?

usingboost::any非常有用,但它没有 getter 非常令人沮丧,而且我们总是不得不使用any_cast它来将它转换为我们想要的类型。但是为什么它没有这样的东西呢?在我看来,波纹管可能是有用的成员。有什么我看不到的坏事吗?

编辑:

我看到的唯一不好的事情是,这个 getter 需要有赋值运算符。