但是,没有编译相同函数声明的下列变体:auto A(T) -> A<T>; // error: redefinition of 'A' as different<typename T> // 3
A<T> A(T); // error: redefinition of 'A' as different kind
最近我的一个朋友想让C++更像Haskell-y,我们想要一个基本上像这样的函数: return a + b;显然,我不能使用auto作为参数类型,所以我将其更改为:auto sum(A a, B b) {}
但这也不起作用。既然编译器可以只查看返回语句,那么decltype不就是重复信息吗?但是我们无论如何都不能使用这样的<