C++ 使用尾部返回类型的优缺点

C++ 使用尾部返回类型的优缺点,c++,c++11,c++14,C++,C++11,C++14,考虑以下简单的代码示例: auto main() -> int { return 0; } 在nice answer中,解释了前面介绍的普通代码示例的含义: auto main() -> int { return 0; } C++11为后续返回类型引入了一种表示法:如果使用auto引入函数声明,则返回类型将在参数和->序列之后指定。也就是说,只需声明main()以返回int 此外,在本文中,以及在他们的回答中,也说明了这种新符号的一些潜在用途 但是,在C++社区中似乎有一

考虑以下简单的代码示例:

auto main() -> int {
  return 0;
}
在nice answer中,解释了前面介绍的普通代码示例的含义:

auto main() -> int {
  return 0;
}
C++11为后续返回类型引入了一种表示法:如果使用auto引入函数声明,则返回类型将在参数和
->
序列之后指定。也就是说,只需声明
main()
以返回
int

此外,在本文中,以及在他们的回答中,也说明了这种新符号的一些潜在用途

但是,在C++社区中似乎有一个潜在的谣言,在不需要时,应该避免使用新的符号。 问题:

  • 使用尾部返回类型的优缺点是什么

  • 特别是对于在
    main
    函数中使用尾随返回类型,将
    main
    与尾随返回类型一起使用可能会导致任何恶化(例如,增加可执行文件的大小)


尾随返回类型是一种专门的语言功能,对于泛型库编写者(即泛型库的编写者,而不是碰巧编写库的泛型人格)非常有用,类似于
decltype
。顺便说一句,这两种语言功能在晦涩难懂或很长的lambda表达式中也有一些有限的用途,但它们不应该在“正常”用户代码中大量使用。如果被否决的投票者解释他们被否决的原因,那就太好了。@Kerrek很适合回答框;-)。出于可读性原因,我通常在类体中使用它,确保函数名正确对齐。。。此外,它允许缩短嵌套的typedef。我没有否决投票,但我投票结束了这个问题,因为它主要基于观点。看看我那冗长的报告。我个人不会使用尾随返回类型,除非绝对必要。