d匹配模板类型结构实例

网友投稿 607 2022-11-16

d匹配模板类型结构实例

d匹配模板类型结构实例

​​原文​​

import core.stdc.stdio;Test!(T, "mode1") make_test(T)(T data) { Test!(T, "mode1") t = { data }; return t;}struct Test(T, string mode = "ref") { T data; }extern (C) void main() { auto obj = make_test(20); static if (is(typeof(obj) == Test)) { printf("YES!!!!!!!\n"); }}

我可以:

static if (is(typeof(obj) == Test!(int, "mode1"))) { printf("YES!!!!!!!\n"); }

这样:

static if (is(typeof(obj) == Test!T, T)) { printf("YES!!!!!!!\n"); }//超过1个模板参数,要求括号

多参,这样:

static if (is(typeof(obj) == Test!Args, Args...))

还可这样:

import std.traits;static if (isInstanceOf!(Test, typeof(obj))) { printf("YES!!!!!!!\n"); }//这样.

现在,可简化​​日志​​为:

struct LOG(T...) { T[0] id; T[1] data;}void main(){ auto obj = //make_test(20);/* make_test('T');//*/ alias typ = //typeof(obj);/* LOG!(int, char);//*/ "Type: ".write; if(isInstanceOf!(LOG, typ)/* is(typ : Template!Args, alias Template, Args...)//*/ ) "LOG".writeln;}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:解决BufferedReader.readLine()遇见的坑
下一篇:SAP Spartacus Site Context 实现专题页面
相关文章

 发表评论

暂时没有评论,来抢沙发吧~