首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模板模板参数

模板模板参数
EN

Stack Overflow用户
提问于 2012-12-15 14:01:37
回答 1查看 207关注 0票数 3

D是否支持模板模板参数?我怎样才能让下面的代码工作呢?

代码语言:javascript
复制
struct Type(alias a, alias b) { alias a A; alias b B; }

template MakeType(alias a, alias b)
{
  alias Type!(a, b) MakeType;
}

template Foo(alias a, U) // where U is a Type
{
  //...
}

template Foo(alias a, U : MakeType!(a, b), b...)  // where U is a specialization
{
  //...
}

Foo的名字应该是这样的:

代码语言:javascript
复制
alias MakeType!(5, 7) MyType;
alias Foo!(5, MyType) Fooed;  // error

Error: template instance Foo!(5,Type!(5,7)) Foo!(5,Type!(5,7)) does not match template declaration Foo(alias a,U : MakeType!(a,b),b...)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-16 03:26:15

我让它工作了:-)

代码语言:javascript
复制
template Foo(alias a, U) // where U is a Type
{
  //...
}
template Foo(alias a, U : X, X) if(is(X == MakeType!(a, U.B)))
{
  //...
}

在用法上:

代码语言:javascript
复制
alias MakeType!(1, 3) MyType1;
alias MakeType!(5, 7) MyType2;
Foo!(5, MyType1) // calls the first Foo()
Foo!(5, MyType2) // calls the second Foo() with specialization
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13889802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档