小编Bal*_*zay的帖子

为什么C++不支持基于动态数组循环的范围?

为什么C++不支持基于动态数组循环的范围?就是这样的:

int* array = new int[len];
for[] (int i : array) {};
Run Code Online (Sandbox Code Playgroud)

我刚刚发明了for[]与韵new[]和韵的说法delete[].据我所知,运行时具有可用数组的大小(否则delete[]无法工作),因此理论上,基于for循环的范围也可以使用.它不起作用的原因是什么?

c++

19
推荐指数
3
解决办法
2331
查看次数

过程替换 =(list) 在参数中间

如何=(list)在参数中间使用 -style 过程替换?

这有效:

% echo =(echo)
/tmp/zshxxxxxx
Run Code Online (Sandbox Code Playgroud)

这也是如此:

% echo =(echo):works
/tmp/zshxxxxxx:works
Run Code Online (Sandbox Code Playgroud)

但这并不:

% echo broken:=(echo)
zsh: missing end of string
Run Code Online (Sandbox Code Playgroud)

值得注意的是,这也有效:

% echo works:<(echo)
works:/proc/self/fd/11
Run Code Online (Sandbox Code Playgroud)

问题是=(list)只能站在争论的开始。引用ZSH手册:

表达式前面或后面可以有其他字符串,但为了防止与常见的字符串和模式发生冲突,最后一个形式 [this is =(list)] 必须出现在命令参数的开头,并且这些形式仅展开当第一次解析命令或赋值参数时。

我有一个接受 形式参数的工具format:filename,并且我需要使用真实文件,而不是管道,所以我无法使用<(list). 什么是相当简单且可读的解决方案?

zsh

5
推荐指数
1
解决办法
241
查看次数

标签 统计

c++ ×1

zsh ×1