@
dynastysea 主是写起来就需要。
----
我上半年写了个 3.5 万行的 C++ 项目,需要低延迟高性能。如果没用 C++17 估计得 5 万行了。
最常用的新特性:
1 、for (const auto& : ...)
2 、T&&,这能让我明确指定一些情况下不需要拷贝而是移动栈对象。(对高性能程序很重要)
3 、template <typename Args...>。我用了很多这个来简化写代码。
4 、template <typename Fn> void someWrapper(const Fn& fn)。这就是所谓的高阶函数,特别简化代码。
常见用法比如 void wrapError(const Fn& fn)
还有就是需要对不同 fn 的进行相似的初始化、返回值进行相似的操作。
5 、template <bool XXX> void f(...) { if constexpr (XXX) { } }。这个特别好用。因为有些分支在有些情况下是不运行的,你想要减少 latency,就用 constexpr 去直接暴力优化掉这些代码。( constexpr 是编译期判断)
6 、std::unique_ptr, std::shared_ptr 。这不是新特性了。但是配合 T&& 和 std::move 就很好用。
上面这些都挺省我代码量的。一些其他零碎可能我用到的不够多就不记得了。