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是否面临同样的问题?如果是这样,它是如何解决的(如果有的话)?
在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)在那个地方使用.