C++11 引入了函数声明的新语法,
auto func(T rhs, U lhs) -> V
这是为了解决旧的 C++ 标准中函数模板出现的一些问题。请阅读这篇简短的维基百科文章部分,了解有关该问题的详细信息:
> http://en.wikipedia.org/wiki/C%2B%2B11#Alternative_function_syntax
我的问题是,D也面临着同样的问题吗?如果是这样,它如何解决它(如果有的话)?
最佳答案
在 D 中,编译器可以为您推断出返回类型。因此不需要 -> V
语法。
auto func(T, U)(T lhs, U rhs) { return lhs + rhs; }
或者如果您想更具体(但最好让编译器使用 auto
确定类型!)
typeof(T.init + U.init) func(T, U)(T lhs, U rhs) { return lhs + rhs; }
与 C++ 一样,您不能在该位置使用 typeof(lhs + rhs)
。
关于function - D 如何通过返回类型解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035230/