boost::mpi 和 boost:serialization with std::variant

2024-04-25

c++17引入了新类型std::variant。是否可以定义一个序列化例程,以便使用std::variant和这个结合boost::mpi?

例如,考虑一个简单的程序

#include <variant>
#include <boost/mpi.hpp>
#include <boost/serialization/string.hpp>

namespace mpi = boost::mpi;

class A {
  friend class boost::serialization::access;

  template <class Archive>
  void serialize(Archive& ar, const unsigned int version)
  {
    ar & x;
    ar & y;
  }

public:
  int x, y;
};

class B {
  friend class boost::serialization::access;

  template <class Archive>
  void serialize(Archive& ar, const unsigned int version)
  {
    ar & z;
  }

public:
  int z;
};

int main()
{
  mpi::environment env;
  mpi::communicator world;

  std::variant<A, B> v;
  if (world.rank() == 0)
    v = B{1};
  mpi::broadcast(world, v, 0);

  return 0;
}

它不会编译并给出错误

error: ‘class std::variant<A, B>’ has no member named ‘serialize’

如何正确定义一个serialize会员为std::variant?请注意,这两种类型A and B在上面的示例中,有一个正确定义的序列化成员。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

boost::mpi 和 boost:serialization with std::variant 的相关文章

随机推荐

  • Vala vapi 文件文档

    我想使用 Vala 破解现有的基于 GLib 的 C 项目 基本上我正在做的是 在构建过程开始时 使用 valac 从 vala 文件生成 c 和 h 文件 然后像编译任何 c 或 h 文件一样编译生成的文件 这可能不是最好的方法 但在大多
  • Total Blank Unity / Microsoft Store Build 未通过 WACK 测试

    我一直在努力为我的游戏取得成功统一 2018 2 1f1 and 视觉工作室 2017 15 8 0 尝试为 Windows 商店成功构建 打包 WACK 失败后所有 每个不同的配置 我尝试了完全空白默认Unity UWP平台应用程序 生成
  • 下边框边距

    有什么方法可以只在边框上添加边距吗 只有边框应该有边距 而不是文本 我正在尝试移动边框而不是文本字段 需要缩小 移动边框而不是文本 CSS margin check border bottom 1px solid d2d7da margin
  • (已解决)插件选项不允许使用多个值 androidx.compose.compiler.plugins.kotlin:reportsDestination

    我正在使用 Android Studio 与 Kotlin 进行 Android 开发 我的项目中有40多个Android模块 其中一些是Java模块 一些主题是android模块 Kotlin Version 1 8 20 Hilt Ve
  • 在 WinForms 表单之间传递数据[重复]

    这个问题在这里已经有答案了 我在项目中创建了一个辅助表单 它可以从主表单获取数据 并且在单击按钮时应将一些数据传递到主表单 这是代码 Add cs private void button1 Click object sender Event
  • 将响应缓冲区转换为 JSON

    在 AWS 中 我使用 https 模块通过 Lambda 发出 get 请求 我能够返回数据 但当我调用时它是缓冲区格式的callback null obj https get options res gt res on data d g
  • 为什么我无法计算正确的 HMAC 签名?

    我正在尝试在 Google Apps 脚本中计算 HMAC 签名 但文档并未 100 清楚地说明我需要如何传递参数 并且我无法获得预期的输出 为了确定我是否获得正确的输出 我将结果与已知良好的 PHP 代码进行比较 该代码是 key a2V
  • 如何为一系列任务设计执行引擎

    我正在尝试用 Java 编写一个问题 我必须执行一堆任务 Problem 执行由多个任务组成的作业 并且这些任务之间具有依赖关系 一个作业将有一个任务列表 每个这样的任务将进一步有一个后续任务列表 每个后续任务将有自己的后续任务 您可以在此
  • _ftol2_sse,有更快的选择吗?

    我有调用很多的代码 int myNumber int floatNumber 这总共占用了我大约 10 的 CPU 时间 根据分析器 虽然我可以就这样 但我想知道是否有更快的选择 所以我尝试四处搜索 并偶然发现 http devmaster
  • 如何使用jquery从字符串中获取第一个字母[重复]

    这个问题在这里已经有答案了 我对 jquery 的了解很差 我已经提到了下面的脚本 var header time col text alert header 我从如何获取第一个字母 例如 1 中得到了字符串 109 00AM 请你帮助我好
  • 无法从字符串中删除“\r\n”

    我有一个像这样的字符串 la lala 135 1039 921 r n 而且我无法删除 r n 最初这个字符串是一个字节对象 但后来我将它转换为字符串 我尝试过 strip r n 与 replace r n 但什么也没有 gt gt g
  • 为什么 HTTP 请求在 Chrome 中陷入挂起状态?

    语言 工具版本 角度 cli 1 2 0 PHP 7 0 8 Zend 表达 2 阿帕奇2 4 23 铬65 0 3325 181 Windows 7的 Issue 我有一个 Angular2 应用程序 它使用 PHP 应用程序作为所有 X
  • java以一种方式绘制矩形而不是同时使用两种方式

    你好 我在java中有一些代码可以绘制一个矩形 但是它只会向右拖动 即使我向左拖动它也会向右拖动 这是代码我有什么帮助吗 public void mouseDragged MouseEvent e Point p e getPoint in
  • 同时使用 POST 和 GET 的 HttpWebRequest

    我需要将用户重定向到http www someurl com id 2 http www someurl com id 2使用 POST 方法 是否可以 如果是 那么如何 现在我有以下内容 它正确转发 POST 数据 但它删除了 id 2
  • 如何在级联下拉列表中显示选定的值?

    我想要为编辑视图中的选定值扩展以下代码 以国家 gt 州 gt 城市为例 我有脚本 Cascading DropDown List js function bindDropDownList e targetDropDownList var
  • 如何在Windows服务程序中捕获SERVICE_CONTROL_SHUTDOWN代码

    我最近正在编写一个Windows服务程序 我在编程时遇到的问题是 当我在 Windows 操作系统上安装程序时 它无法正常关闭 关闭系统需要很长时间 看来我的程序是问题的原因 我试图在互联网上找到解决方案 我发现在我的代码中添加 SERVI
  • FF 和 IE 不从 CSS 加载 img src

    我正在使用这样的 css 设置图像的 src Banner content url Banners prussia awesomeness gif width 1000px 这是我的图片 div class Header img src a
  • 视频无法以全屏模式播放

    当我尝试在全屏浏览中播放嵌入视频时 出现 NPE 它在 3 0 蜂窝中运行良好 但在 ICS 4 0 中运行不佳 知道如何解决这个问题吗 java lang NullPointerException at android webkit Pl
  • php codeigniter 中的 concat

    请帮助我理解正确的连接语法 我有一个名为存货其中有 trans id trans items items gt item id trans user employees gt person id trans date trans comme
  • boost::mpi 和 boost:serialization with std::variant

    c 17引入了新类型std variant 是否可以定义一个序列化例程 以便使用std variant和这个结合boost mpi 例如 考虑一个简单的程序 include