D如何用返回类型解决这个问题?

Pau*_*nta 6 syntax d function

C++ 11引入了一种新的函数声明语法,

auto func(T rhs, U lhs) -> V
Run Code Online (Sandbox Code Playgroud)

这是为了解决旧C++标准中出现的一些带有函数模板的问题.阅读这篇简短的维基百科文章部分,了解该问题:
> http://en.wikipedia.org/wiki/C%2B%2B11#Alternative_function_syntax

我的问题是,D是否面临同样的问题?如果是这样,它是如何解决的(如果有的话)?

ken*_*ytm 9

在D中,编译器可以为您推导出返回类型.所以没有必要有-> V 语法.

auto func(T, U)(T lhs, U rhs) { return lhs + rhs; }
Run Code Online (Sandbox Code Playgroud)

或者如果你想更具体(但最好让编译器找出类型auto!)

typeof(T.init + U.init) func(T, U)(T lhs, U rhs) { return lhs + rhs; }
Run Code Online (Sandbox Code Playgroud)

像C++一样,你不能typeof(lhs + rhs)在那个地方使用.