来自cppreference:
template< class M, class N>
constexpr std::common_type_t<M, N> gcd(M m, N n); (since C++17)
IIUC,以返回正确的类型,
template< class M, class N>
constexpr auto gcd(M m, N n); (since C++17)
自c ++ 14起,具有相同的效果并且更加优雅。 std::common_type_t
只是c++11
的一种解决方法。但是std::gcd
是因为c++17
答案 0 :(得分:5)
auto
指示应从实现中推断类型。将auto
放在文档页面无上,实现对阅读文档的人没有帮助。另一方面,std::common_type_t
具有明确定义的行为,可以直接从该文档页面链接到该行为,从而使其更加有用。
答案 1 :(得分:3)
指定private String[] button_Shapes;
//Create new form Calculator
public JCalculator(){
//...
//Put buttons in an array
button_Shapes = {"7", "8", "9", "/", "4", "5", "6", "x", "1",
"2", "3", "-", "0", "C", "=", "+"};
返回“ std::gcd
”不会告诉标准API的实现者或用户有关函数返回内容的任何信息。这样的规范将无用。
请注意,尽管返回类型被指定为auto
,但是只要推断出的类型符合规范,什么都不会阻止实现在其标头中使用std::common_type_t<M, N>
返回类型。
auto
只是c ++ 11的一种解决方法
不。 std::common_type_t
的{{1}}别名在C ++ 14中引入。这不是“解决方法”。