问题标签 [c++17]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++17 可恢复/等待:它也可以与 boost::future 一起使用吗?
在 C++17 中,有像 C# 一样美好的未来await
。
但我想知道是否boost::future
也可以使用:
c++ - [现代] C++ 中的 N 个变量的范围/循环
遍历 N 个变量(每个变量的任何类型)以执行操作的简洁方法是什么?
假设我有变量a
, b
, c
, d
,e
并希望通过所有这些变量执行一些操作。
c++ - 什么是“基于范围的简洁 for 循环”?
clang 已经从n3994开始实现基于范围的简洁 for 循环。通常在引入基于范围的 for 循环时,我们会看到代码形式为避免不必要的复制。似乎 n3994 提议for (auto & v : vector)
for (auto && v : vector)
在各方面都提出了优越的建议。我有几个问题:
- 后一种形式比前一种有什么优势?为什么我们通常去
auto &
auto &&
如果后者显然是有利的而不是? - 使新的基于范围的循环等效于
auto &&
于破坏现有代码吗?它会对新代码产生实际影响吗? - 这不会向初学者介绍他们的代码实际上等同于的陷阱
auto &&
吗?
c++11 - 如何使用现代 C++11/C++14/C+1Z 编写 UNIX 文件系统“ls -R /”实用程序?
为了学习/理解现代 C++ 的各种概念,我尝试编写类似的程序,如“ls -R /”,它会递归地列出子目录。为了实现这一点,我正在使用未来的 C++ TS 文件系统库,以便该程序可以移植。到目前为止,我能够编写以下程序来实现这一点。
如果我的输入目录具有一级子目录,则上述程序可以正常工作并产生预期结果。我本可以使用"recursive_directory_iterator",但它给出了输入目录内所有目录中所有文件的列表。
它不处理实际输入目录包含子目录的情况,该子目录本身包含子目录和文件。基本上,这些级别可以达到由 UNIX“ls -R”实用程序处理的任何级别。
问题
我想知道下一个处理目录中n 级层次结构的方法是什么?
一般来说,当我们需要对“部分整体层次结构(递归) ”需要建模的类似事物进行建模/设计时,我们应该遵循什么样的方法。我对可用于对此类东西建模的“复合设计模式”有点了解。这种模式可以应用于这个特定的问题吗?如果是,有人可以提供解释/评论吗?
我在这里的主要目的是了解使用现代 C++ 概念/库/设计概念处理此类问题的一般准则。如果有人需要有关此信息的任何信息,请告诉我。
c++ - 带有 initializer_list 的可选构造函数
这个特殊构造函数采用初始化列表的目的是什么。有人可以举一个例子说明这什么时候有用吗?
以上与此有何不同?
参考:http ://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3793.html#optional.object.ctor
PS 不确定是使用 c++14 还是 c++1z 标签。我认为应该有 c++ 技术规范的标签
c++ - 为什么即使使用 constexpr 索引,编译器也允许越界数组访问?
例如,如果我们有一个std::array
并且我们使用编译器实例化一个超出范围的元素constexpr
不会报告错误:
我们不能以某种方式限制它吗?
c++ - 折叠表达式与任意可调用?
查看有关折叠的 C++17论文(以及有关cppreference),我很困惑为什么选择仅与运算符一起使用?乍一看,似乎只需在 的元素之间插入(... + args)
一个标记就可以更容易地扩展,但我不相信这是一个很好的决定。 +
args
为什么二进制 lambda 表达式不能很好地工作并遵循与上述后者相同的扩展?在不支持任意可调用对象的情况下将折叠语法添加到语言中让我感到震惊,那么语法是否允许使用我只是没有看到的方法来使用它们?
更新:这适用于min()
带有 clang 的可变参数函数
c++ - 固定大小数组的非成员 std::empty 重载的返回值
[已接受] 标准文件N4280添加了几个新的非成员函数以折叠到 C++17 中。
有评论指出每个新的非成员函数的正确返回值,特别是std::empty
固定大小数组的重载让我感到困惑。该论文建议该重载的返回值将始终为false
; 所有固定大小的数组永远不会为空。
为什么会这样?据我所知,有可能(尽管可能没用)有一个大小为零的数组,如int x[0];
,我称之为空的。
作为参考,我所说的特定过载是: