问题标签 [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 回答
58 浏览

c++ - 提升图书馆和持有价值

我已经使用boost了一段时间,但仍然是新手。我想我爱上了,boost::any因为我不再需要使用模板来处理使用或返回的类型化对象。然而,我觉得对我来说仍然不方便的一件事是更平滑的功能或方法,如果有的话,可以held简洁地来回传输其数据,并且以后肯定不会使用cast_any.

习俗

自定义 boost_any:

我喜欢这个功能,因为在调试我的程序期间,我发现这held="123456"两种情况下的对象完全相同。我thinklib 的内部实现可能已经做到了(将它保存的内容转换为string)。此示例仅显示 POD 类型,我想知道是否有人对此自定义进行了任何操作或为我消除cast_any.

0 投票
1 回答
688 浏览

c++ - 如何获取对 boost::any 持有的数据的 const 引用?

在尝试通过引用强制转换检索boost::any实例后,我无法维护 const 的正确性。boost::any_cast

我的代码:

对于为什么只有最后一个版本会产生错误,我也有点困惑。我收到的错误消息是这样的:

C:...\boost_1_58_0\boost\any.hpp:284: error: C2440: 'return' : cannot convert from 'const nonref' to 'A &' 转换丢失限定符

第 284 行如下所示:

它是从下面的一行调用的:

实施:

您可能会认为 MyMap 提供了开箱即用的无用包装功能,但真正的实现具有 get/set 方法,可在内部 std::map 内自动创建嵌套映射,提供酷炫灵活的 DOM 类数据结构。

0 投票
1 回答
354 浏览

c++ - boost::any 中的模板复制构造函数

boost::any 中的模板复制构造函数

我对 boost 的 any.hpp 中的这些代码感到困惑。

很明显,当我需要来自另一个对象的新对象时,对于 sencod 复制构造函数很有用。但是什么时候会执行第一个复制构造的呢?

0 投票
1 回答
259 浏览

c++ - 从 boost::program_options 值中键入 un-erasure

我正在尝试使用boost::program_options. 除其他外,我编写了一个无法编译的函数。这是一个编译失败的最小 .cpp 文件:

使用四个选项中的任何一个,我都会得到不同的编译器错误:

  • 使用选项 1:

    /li>
  • 使用选项 2:

    /li>
  • 使用选项 3:

    /li>
  • 使用选项 4:

    /li>

我究竟做错了什么?

0 投票
1 回答
2124 浏览

c++ - 当我将元素类型存储在另一个字符串向量中时,如何打印 boost::any 的向量?

  • 我使用 boost::any 的向量来存储不同的数据类型,从给定的程序文件构造符号表。
  • 我还将它们的数据类型作为字符串存储在单独的向量中。
  • 在尝试使用 boost::any_cast<>() 打印 boost::any 时,如果我将存储为字符串的数据类型作为强制转换类型传递,则会收到 bad_any_cast 错误。
  • 如何克服这个障碍并使用我作为字符串的类型信息打印向量。

    /li>
0 投票
2 回答
1142 浏览

c++ - 将 boost::any 转换为 boost::variant 的通用函数

假设你有一个boost::any对象和一个boost::variant对象。

我正在寻找一个通用函数convert,它接受一个模板参数 T 是一个专门的boost::variantegboost::variant<int, std::string>并神奇地将其转换为boost::any给定的可用类型之一boost::variant

我想知道是否可以编写这样的函数,或者由于某种原因它可能是不可能的?

0 投票
1 回答
103 浏览

c++ - boost::any 构造函数 - const 类型重载决议

boost::any 有一个完美的前向构造函数,声明为:

is_const<> SFINAE 排除将 const 类型强制为常规复制构造函数:

如果删除了 is_const<> 排除项,常规复制构造函数处理 const 值的方式与完美前向构造函数的处理方式有何不同?

0 投票
1 回答
851 浏览

c++ - std::any 是否使用类型擦除、子类型或多态性?

在阅读有关boost any实验性 any的文档时,
我没有看到任何提到类型擦除的内容。

我试图理解适用于 C++ 的“类型擦除”的概念。

说“任何”类型在存储其值时使用“类型擦除”是否正确?
说它在存储其值时使用“多态性”是否正确?
“类型擦除”是一种“多态性”吗?

关于多态性的维基百科文章也没有提到“类型擦除”。
它提到了“子类型”。“类型擦除”是一种“子类型”吗?

对不起,如果这个问题似乎朝着不同的方向发展。

总结一下,

“类型擦除”、“多态模拟”和“子类型”与C++中的任何类型有何关系?

0 投票
0 回答
332 浏览

c++ - 尝试使用 Boost::any 的 boost::serialization

我正在尝试使用 boost::serialisation 来保存和加载一些对象。到目前为止,从 boost::tutorial 开始,我已经设法为所有不同的 stl 东西(向量、对、列表等)、派生类、boost 多数组和其他东西工作,但我一直在努力工作围绕如何序列化 boost::any 向量。让我提前说一下,我在论坛中找到并检查了一些关于 boost::varian 序列化的帖子,甚至还有一个关于 boost::any 的帖子(甚至有一个几乎相同的标题),但我还是没能解决我的问题. 所以让我举一个小例子:

说我有这门课:

更准确地说,我们期望这个小示例存在于 boost::any 向量中的 class_1 是以下类:

因此,当我使用 main 函数编译上述代码时,我在其中保存并加载了一个包含 boost::any 向量的 class_2 对象,一个 class_1 的对象,一切都会编译甚至运行:

再次加载的 newclass 对象有一个空的 boost::any 向量,其中没有保存任何内容。所以我的问题是我在上面的代码中做错了什么,我应该改变什么才能正确序列化 boost::any 向量..?任何帮助/建议将不胜感激。

0 投票
3 回答
2097 浏览

c++ - boost::指针与值的任何混淆

我花了一段时间才弄清楚这一点,但语义boost::any令人困惑。

对于值类型,您可以像这样使用它:

此代码清晰且有意义,但在value内部存储为副本。这意味着对于我放置在其中的较大对象boost::any,它们将被复制。此外,我用它替换的任何函数void*都期望在我修改对象中包含的值时修改函数外部的值boost::any(这不会发生,因为它复制了它)。

因此,如果我将指针放入其中,事情就会变得很奇怪:

在这种情况下,我必须取消引用返回值,因为boost::any_cast返回int**!我也没有检查过,但我认为如果something.empty() == true. 这根本不简单。

我不想在我boost::anyvoid*. 指针,指针,混合了一些类型安全。基本上我想要的是boost::any_pointer,或类似的东西。有没有办法禁止boost::any接受除指针以外的任何东西?如果没有,是否有替代方案boost::any可以为我提供我正在寻找的语义?