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

在C++中限制“auto”不是违背了它的目的吗?

齐泰
2023-03-14
auto something(){
  return 1;
}

int main(){
  const auto x = something();
  return x;
}
std::integral auto something(){
  return 0;
}

int main(){
  const auto x = something();
  return x;
}

共有1个答案

司徒俊雄
2023-03-14

对导出的auto类型的约束并不意味着它必须是特定的类型,而是意味着它必须是满足约束的一组类型之一。请注意,约束和类型不是一回事,它们是不可互换的。

例如,像std::integral这样的概念将推导的类型限制为整型,例如intlong,但不是floatstd::string

如果我真的需要std::integrate数据类型,难道我不能完全省略auto吗?

foo f = // ...

foo是类型还是对类型的约束?

而在当前语法中,我们有

foo auto f = // ...

毫无疑问,foo是对F类型的约束。

 类似资料:
  • 我制作了一个带有jPanel和JLabel数组的调色板。起初它运行良好,但后来我从 JPanel 中取出了一些其他 jLabels,并添加了一些事件。现在我不断收到此错误: 我试图删除第一次收到此错误后所做的一切,但仍然不断收到它。当我将布局从 GridLayout 更改为其他任何内容时,错误消失了,但代码变得无用。所以我需要网格布局。当我将该 JPanel 中的所有内容移动到另一个 JPanel

  • 到目前为止,我的程序主要是MVC模式的“模型”部分;也就是说,我几乎所有的代码都是类意义上抽象的OO表示,所有这些代码都是逻辑代码。 由于我不想成为我的程序的唯一用户,我想添加MVC的“视图”部分,以便人们可以轻松地使用和操作我的程序的“模型”部分。为此,我想使用JavaFX。 在我的“模型”类中,我显然使用了来自Java Collections API的各种列表、映射和其他类。为了让我的程序的用

  • 我目前正在制作一个游戏,我想限制每秒的帧数,但我对此有问题。这是我正在做的: 我通过每个帧执行的这个方法获取deltaTime: DeltaTime是有我所期望的值(大约0.012......到0.016...) 然后,我使用deltaTime通过睡眠窗口函数来延迟帧,如下所示: MAXFPS等于60,我乘以1000将秒转换为毫秒。虽然一切似乎都是正确的,但我的帧速率仍然超过了60帧(我的帧频约为

  • 实际上,恰恰是专有软件的理念--不允许共享或改动软件--是反社会的,也是不道德的,而且也是完全错误的。但是长期以来,软件出版商使人们相信:软件天生就该如此。这种片面的认识禁锢了人们的思维。当他们在谈论如何加强版权或打击盗版时,他们也认定这是天经地义,人们也会毫无异议地接受。 他们的第一个假设就是:软件公司对自己的软件拥有毫无疑问的天然权力,因而可以将权利施加到所有用户身上。(因为如果是天然权力,那

  • 我知道这里描述的Java(和一般)中的比较规则。 我有一个字符串数组列表。 每个字符串代表一个德州扑克手,忽略花色。 每个字符串正好有13个字符长。 每个字符串仅由总和为7的数字组成。 例如,“0100300200100”代表一手由一张3、三张6、两张9和一张皇后组成的扑克。< br >(在这种情况下,这手牌代表满堂红-六加九)。 我想根据扑克手的力量对这个列表进行排序。 我有以下java代码,它

  • 我使用: 创建目录。虽然,它似乎工作正常(没有异常被抛出)我找不到文件夹/目录在文件系统的任何地方。我做错了什么吗?