主要观点:
- 介绍了 C++11 中的尾随返回类型(trailing function return types)这一替代语法,用于声明函数的返回类型。
- 阐述了使用尾随返回类型的优点,如一致性、理解性和可读性,以及缺点,如缺乏熟悉度和更多打字。
- 讨论了在 C++ 中是否应广泛使用尾随返回类型,认为其一致性等优点并非绝对必要,缺乏熟悉度是不使用的主要原因,且 C++14 引入的自动推导返回类型减少了其使用场景。
关键信息:
- 旧形式在函数名前指定返回类型,如
int max(int a, int b);
,新形式在函数名和参数后指定返回类型,如auto max(int a, int b) -> int;
。 - 新语法在函数模板中指定依赖于模板参数的返回类型时很有用,可避免
declval()
的混淆。 - 优点包括与现代 C++趋势一致、更易理解函数功能、使函数名对齐更美观、代码更简洁等。
- 缺点有大多数现有代码不使用导致开发者不熟悉、对于简单函数需更多打字、与 C++ 生态部分不一致等。
重要细节:
- 如 lambda 函数也使用尾随返回类型,如
auto square = [] (int n) -> int { return n*n; }
。 - 示例代码中各种函数声明的形式及差异,如
auto is_empty() -> bool;
等。 - 提到 Herb Sutter 的相关文章及其他进一步阅读资源,如GotW #94 Solution等。
- 讨论中还提及 C++14 自动推导返回类型使尾随返回类型的使用场景减少。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。