包含模板结构的模板接口

Template interface containing template struct

给定一个结构模板和一个模板接口,该模板接口的成员 returns 结构模板以及另一个不同类型的成员,设计和实现的正确方法是什么?

我有以下内容,但在执行时出现编译错误:

struct TemplateStruct(T, U) {
  T a;
  U b;
}

interface IFoo(V) {
  TemplateStruct resulta();
  V resultb();
}

class Foo : IFoo!int {
  TemplateStruct!(bool, string) resulta() {
    return TemplateStruct!(bool, string)(true, "a");
  }

  int resultb() {
    return 1;
  }
}

翻阅在线 Programming in D 书中没有涉及实现这种情况。

这是你的错误:

interface IFoo(V) {
    TemplateStruct resulta(); // <== Here
    V resultb();
}

resulta() returns TemplateStruct,这是一个模板,不是完整的类型。您需要指定其模板参数,就像您在 class Foo:

中所做的那样
interface IFoo(V) {
    TemplateStruct!(bool, string) resulta();
    V resultb();
}