D言語 Part12at TECHD言語 Part12 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト877:デフォルトの名無しさん 07/04/19 07:41:46 そこで文字列mixinですよ import std.metastrings; template F(int i,T...){ static if(T.length == 0) const char[] F=""; else const char[] F="ref T["~ToString!(i)~"]" ~ (i+1==T.length?"":","~F!(i+1,T[1..$])); } struct A(T...){ mixin("alias int delegate("~F!(0,T)~")dg_t;"); int opApply(dg_t dg){ return 0; } } void main(){ A!(int,char)X; A!(int)Y; foreach(int x,char c;X){} foreach(int y;Y){} } 878:873 07/04/19 12:38:15 >> 877 ありがとうございます!無事動作しました。 ただ、 (i+1==T.length?"":","~F!(i+1,T[1..$])); だと期待する動作ではなかったので(引数が一つ足りない)、 (i==T.length?"":","~F!(i+1,T[1..$])); とさせていただきました。 文字列mixin、すごいですねえ!! 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch