C++ 尾随返回类型

主要观点:

  • 介绍了 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 自动推导返回类型使尾随返回类型的使用场景减少。
阅读 166
0 条评论