最终的C++ 11标准包括基于范围的规定,以便为原生数组"正常工作",而不必包含<iterator>任何其他标题.据我所知,由于英国78和79的评论,在工作文件n2900中首先解决了这个问题.
该提案还包括隐含#include <initializer_list>在每个翻译单元中的条款,以便例如该程序
#include <iostream>
int main()
{
for (auto i : { 1, 2, 3, 4, 5 })
std::cout << i << "\n";
}
Run Code Online (Sandbox Code Playgroud)
即使没有包括,也会符合标准<initializer_list>.
但是,当从C++ 11中删除概念时,基于范围的修订版被修改为如n2930所示.虽然数组"正常工作"的规定仍然存在,但没有提到初始化列表也是如此; 事实上,各种标准库容器标题的规范#include <initializer_list>和8.5.4.2的最终文本意味着与我相反.
据我所知,这与该主题的最终措辞非常接近.那么,关于最终标准的程序是否完善,或者我是否需要#include <initializer_list>在基于范围的基础上使用它?换句话说,在基于范围的情况下使用初始化列表是否构成了" std::initializer_list根据FDIS的8.5.4.2 使用---甚至是未命名类型的隐式用法"?
[免责声明:我对套接字的了解非常生疏,我刚刚进入R,所以如果我错过了一些完全明显的东西,请指出它!]
如果我没有理解用于创建和管理插座,即(稀疏文件)R的功能socketConnection和make.socket,看来,创建一个服务器套接字(时server=TRUE),以下的道德相当于进行:
s = socket(yada yada);
listen(s, ...);
s2 = accept(s, ...);
close(s, ...);
Run Code Online (Sandbox Code Playgroud)
现在我可以使用s2但无法循环处理积压的传入连接s.这或多或少是正确的吗?在处理第一个连接后,有没有办法继续监听并继续处理其他传入连接?
我在Idris中有一个简单的概念证明,它使用依赖类型来强制执行一些不太复杂的业务逻辑.一些名字已被改变以保护不那么无辜,但我们的想法是我们想要按顺序收集"线".每一行都属于特定部分,但只有一个(EconProduction)有我们关心的任何内容.通常,行具有特定于节的关键字和表达式,其表单/类型可能取决于所使用的关键字.
对于此特定部分,每行描述"阶段"(Prod)的某些数字,或者继续最后命名的"阶段"(Continue).
在Idris,我们可以这样做:
data EconSection
= EconGeneral
| EconProduction
data EconPhase
= Oil
| Water
| NumPhase Nat
data ContState
= ContNone
| ContProd EconPhase
data Keyword : EconSection -> ContState -> ContState -> Type where
Prod : (p : EconPhase) -> Keyword EconProduction c (ContProd p)
Continue : Keyword s c c
data Expression : (s : EconSection) ->
(d : ContState) ->
Keyword s c d ->
Type where
ExProc : Double …Run Code Online (Sandbox Code Playgroud)