当前位置: 首页 > 知识库问答 >
问题:

如何使用C20需求/概念限制折叠表达式?

姬英武
2023-03-14

如何使用C 20概念限制可变模板和折叠表达式中允许的类型?

例如,假设我想将以下折叠表达式限制为仅支持整型类型,我将如何做到这一点?

#include <string>
#include <iostream>
#include <concepts>
using namespace std;

template<typename... Args> // requires (is_integral<Args>::value )
    int sum(Args... args) { return (... + args); }
int main()
{
    cout << sum(1,2,3);
}

共有2个答案

丌官博文
2023-03-14

您可以使用类型约束auto语法:

int sum(std::integral auto... args) { return (... + args); }
罗均
2023-03-14

使其工作的最小更改是:

requires (std::is_integral<Args>::value && ...)

我还建议使用不太详细的is\u integral\u v

或者,更好的是,一个概念:

template <std::integral ...Args> // no requires needed

 类似资料:
  • 考虑以下片段: 在\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\一切工作完美,我得到打印出来的屏幕。 在中,我做了完全相同的操作,希望从参数包中读取。然而,我明白了 我做错了什么?人们会认为事情会完全一样,我只是替换了操作

  • 使用: 随着项目Cheesesquare的更新。 进入奶酪的细节,我移除2张牌(只有一张)。有没有办法防止显示空白的工具栏折叠?

  • 问题内容: Java中有没有称为“恒定折叠”的概念?如果是,那是什么? 问题答案: 常量折叠是在编译时简化常量表达式的过程。常量表达式中的术语通常是简单的文字,例如整数2,但也可以是其值从未修改的变量,也可以是显式标记为常量的变量 是的,它存在于Java上:编译器优化

  • 约束类型名J与类型名U相同的好方法是什么?

  • 问题内容: 单击标题栏时,我想展开和折叠表行。我只想展开/折叠特定标题下的行(单击)。 这是我的表结构: 关于如何完成此任务的任何想法。使用div这个任务似乎很简单,但是我有要处理的表格数据。 我能想到的一个想法是在每行中使用css类,以区分每个标题下的行,并仅在单击标题时使用JQuery扩展/折叠这些行。但是,如果我的表有10-15个标题,那么似乎很难跟踪CSS类。 请提出实现此目标的合适方法。

  • PWM_limit 状态机根据解锁前和解锁后的输入控制PWM输出。并在”解锁“、油门加速和解锁信号的断言之间提供延迟。 快速概要 输入 armed: 置1使能诸如旋转螺旋桨的危险行为。 pre-armed: 置1使能诸如移动控制面的良性行为。 这个输入覆盖当前状态。 pre-aremd置1无视当前状态,立即强制转移到状态ON,值0则回复到当前状态。 状态 INIT和OFF pwm输出值设定为未解锁