D中的抽象自动函数

D中的抽象自动函数,d,D,有没有办法在D中有一个抽象自动功能 如果我声明一个类如下: class MyClass { abstract auto foo(); } 我得到以下错误: main.d(12): Error: function declaration without return type. (Note that constructors are always named 'this') main.d(12): Error: no identifier for declarator foo() 我想

有没有办法在D中有一个
抽象自动
功能

如果我声明一个类如下:

class MyClass
{
    abstract auto foo();
}
我得到以下错误:

main.d(12): Error: function declaration without return type. (Note that constructors are always named 'this')
main.d(12): Error: no identifier for declarator foo()

我想知道为什么这不可能?还有其他方法可以获得类似的功能吗?

没有,因为
auto
是静态类型的占位符。抽象类无法知道类型应该是什么,因为它没有指定。即使这确实有效,
foo()
可能会根据其在派生类中的实现返回不同的类型。您可能不希望这样,因为这意味着API可能因实现而异


如果您确实需要这种功能,请查看。

您希望它做什么?如果将
auto
放在函数的返回类型上,这意味着它应该尝试从函数体中的返回表达式推断类型。它很难做到这一点,同时你告诉它没有一个功能体?请在这里详细说明你真正想做什么。请看我下面的评论。我已经整理好了,谢谢。是的,谢谢。我曾笨拙地尝试使用auto关键字来替换类中的泛型,其中函数的返回类型作为模板参数给出。我现在明白为什么这没有意义了。