序列元组

2023-11-29

我想将一系列类存储到一个元组中,并将该序列声明为另一个类的成员:

template<size_t id> class Foo {};

template<size_t N>
class FooContainer
{
  std::tuple<Foo<0>, Foo<1>, ..., Foo<N>> tup; // build this type at compile time ??
};

我试过这个:

template<size_t N>
class FooContainer
{
  template<size_t... id>
  struct FoosImpl {
    constexpr FoosImpl(std::index_sequence<id...>) {};
    using type = std::tuple<Foo<id>...>;
  };

  template<size_t N, typename Indices = std::make_index_sequence<N>>
  using Foos = decltype(FoosImpl(Indices())::type);

  Foos<N> tup;
};

但这并没有编译。海湾合作委员会投诉:error: missing template arguments before ‘(’ token using Foos = decltype(FoosImpl(Indices())::type);

我认为编译器不需要指定模板,并且它会从中推导出整数序列Indices()。但事实似乎并非如此。


这是做你想做的事情的一种可能的方法:

#include <tuple>

template<size_t id> class Foo {};

template <size_t... Idx>
std::tuple<Foo<Idx>...> get_foos(std::index_sequence<Idx...>);

template <size_t N>
using foo_tuple = decltype(get_foos(std::make_index_sequence<N>{}));

template<size_t N>
class FooContainer {
     foo_tuple<N> tup;
};

您(当前)不能让编译器推断出类模板参数(正如您需要的那样)FoosImpl),但您可以让它推断函数的模板参数并使用返回类型。

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

序列元组 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 当 Sphero 同步并且我使用多个 Activity 时如何保持蓝牙连接

    当我与 Sphero 同步并且想要从一个活动传递到另一个活动时 我的同步丢失了 我必须在新活动中执行 onCreate 中的此方法才能再次获得同步 RobotProvider provider RobotProvider getDefaul
  • 如何在 Java SE 环境上部署 JAX-RS 应用程序?

    我想使用 JAX RS 编写 RESTful Web 服务 并且想将其发布到本地主机上 例如http localhost port 我在这篇文章中读到了以下内容answer Java SE 7 JSR 336 和 Java SE 8 JSR
  • Python:检查异常引发的位置

    采取这个代码 def A try B except Exception pass def B C def C print exception handling pointer A 功能exception handling pointer应该
  • javascript确认函数确定和取消返回相同的结果

    在这里 我打电话confirm param1 param2 显示警报的方法Do you want to continue 在这种情况下 如果用户单击OK 它返回true 如果用户点击Cancel 它返回false 但是 当单击取消按钮时 它
  • Keras:使用 flow_from_directory 的 fit_generator 的多个输入

    fit generator 中是否可以有两个 flow from directory 例如 train generator 1 train datagen flow from directory train data dir 1 targe
  • 布尔运算符 ++ 和 --

    今天 在编写一些 Visual C 代码时 我遇到了一些令我惊讶的事情 看来 C 支持 bool 的 增量 但不支持 减量 这只是一个随机决定 还是背后有某种原因 这编译 static HMODULE hMod NULL static bo
  • Windows 批处理文件中的字符串处理:如何用前导零填充值?

    在 Windows cmd 批处理文件 bat 中 如何填充数值 以便将 0 99 范围内的给定值转换为 00 到 99 范围内的字符串 IE 我希望小于 10 的值有前导零 您可以使用一个两阶段的过程 REM initial setup
  • 日期时间到纪元的转换

    我有一个 bash 问题 使用 awk 时 我正在提取文本文件中第一列和第五列的每个实例 并使用以下代码将其通过管道传输到新文件 cut f4 test170201 rawtxt awk stream 0 print 1 5 gt test
  • bash 中的转义引号(嵌入式 awk)

    我有一个复杂的命令通过 ssh 传递到远程服务器 我正在尝试解压缩一个文件 然后在第二个 ssh 命令中更改其命名结构和扩展名 我的命令是 ssh root server1 gzip d tmp file out 20171119 gz e
  • 使用 PHP 通过 SSL 连接到 MySQL

    我正在编写第一个脚本 它将通过 SSL 连接到 MySQL 数据库 我已经阅读了大量有关该主题的文章 并且遇到了许多关于如何设置它的选项 有些适用于我的情况 有些则不适用 这是我的情况 MySQL 服务器与脚本位于同一台计算机上 我的 SS
  • d3.js 中的转换队列;逐个

    我尝试在 d3 js 中进行链式转换 为此 我在数组中定义了一组转换 并 尝试 创建一个函数来递归调用它们 each end function 在前一个完成时开始转换 但我还没有结果 行动清单 animations function con
  • 如何调试MEF异常?

    我们目前正在使用 MEF 托管扩展性框架 http mef codeplex com 并且它会抛出异常 而可供继续处理的信息有限 有没有办法调试 MEF 异常 我的例外是这样的 System Reflection ReflectionTyp
  • 绑定动态加载的fxml的宽度和高度

    目前 我在运行时动态加载 FXML 文件时遇到问题 一旦将它们添加到窗格中 它们就不会调整大小以使用该窗格的完整宽度和高度 我使用此方法在窗格中加载 FXML public void showContentPane String sURL
  • Facebook 连接对话框弹出窗口

    当使用 连接 facebook 连接按钮时 当我单击它时 它会在当前窗口之外打开一个新的弹出窗口 这很烦人 我如何才能使用大多数网站上的内联模式对话框 我附上了一个示例网站 看看您是否可以利用它来制作任何东西 http www gigloc
  • 在 C 中从布尔值设置位掩码的快速方法

    执行检查并设置 清除标志是很常见的 例如 if some test flag SOME FLAG else flag SOME FLAG 到目前为止我发现的一个方便的方法是 flag some test flag SOME FLAG fla
  • 使用 Pyomo 或 cvxpy 预测建筑物的功率(模型预测控制)

    我有室外温度的数据 8 2 10 13 并且我有我的建筑物的热惯性 8h 限制之一是将我的建筑物的内部温度保持在 20 度以内 我们从平衡状态开始 T in 20 T o 20 但一小时内的 T o 18 因此 Delta T o 18 度
  • 在 Meteor 中指定内容类型 (JavaScript)

    如何在 Meteor 中指定内容类型 我有一个返回 JSON 的页面 但响应标头是html text我需要做到application json 我在用iron router然后通过模板显示json 我只需要更改该页面的响应标头 我该怎么做
  • 是否有可能以这种方式使用 AGG 函数进行 SQL 查询?

    假设我有以下聚合函数 AGG1 AGG2 AGG3 AGG4 是否可以像这样编写有效的 SQL 以与数据库无关的方式 SELECT COL1 COL2 AGG1 param1 AGG2 param2 FROM SOME TABLES WHE
  • Laravel 4 Ajax 检查以包含 XMLHttpRequest (来自 Magnific Popup)

    Using 这个问题的代码 extends layouts isset ajax ajax master 检查 Ajax 它适用于常规 Ajax 页面加载 但不适用于使用弹出窗口 在本例中 我使用 Magnific Popup 的 Ajax
  • 序列元组

    我想将一系列类存储到一个元组中 并将该序列声明为另一个类的成员 template