Back to page

− Links

 Print 

Diff of Articles​/CTFEableなPhobosのモジュール :: D言語友の会

Diff of wiki:Articles/CTFEableなPhobosのモジュール

  
Cur: 2012-03-31 (Sat) 20:34:53 SHOO[3] source[4] Edit[5]
Line 1: Line 1:
 +TITLE:【WIP】CTFEableなPhobosのモジュール
 +* はじめに [#i909453d]
 +CTFEableっぽいPhobosモジュールが本当にCTFEableなのか気になったので調べてみました。
 +&font(Red){※編集中です};
 +
 +* std.algorithm [#yca69bdf]
 +** map [#e999315d]
 +[[Issue 6419:http://d.puremagic.com/issues/show_bug.cgi?id=6419]]のせいで動きません。
 +
 +** reduce [#ta1428d5]
 +#code(d){{{
 +reduce!fun(arg); // 動く
 +reduce!(fun1, fun2)(arg) // 動かない
 +}}}
 +
 +** fill [#zea95e80]
 +#code(d){{{
 +int[] a = [1, 2, 3, 4];
 +fill(a, 6) // memcpyを使っているので動かない
 +fill(a, [5, 6]) // 動く
 +}}}
 +
 +** filter [#za10ae8b]
 +[[Issue 6419:http://d.puremagic.com/issues/show_bug.cgi?id=6419]]のせいで動きません。
 +
 +** move [#le8e2600]
 +#code(d){{{
 +Object o1;
 +Object o2;
 +move(o1, o2); // 動く
 +static struct S{}
 +S s1;
 +S s2;
 +move(s1, s2); // memcpyを使っているので動かない
 +}}}
 +
 +** moveAll [#g1b11b4a]
 +#code(d){{{
 +int[] a = [1, 2, 3];
 +int[] b = [0, 0, 0, 0, 0];
 +moveAll(a, b);
 +assert(a == b[0..3]); // ←なぜか通らない
 +}}}
 +
 +** moveSome [#d966063d]
 +#code(d){{{
 +int[] a = [1, 2, 3, 4, 5];
 +int[] b = [0, 0, 0];
 +moveSome(a, b);
 +assert(a[0..3] == b); // ←なぜか通らない
 +}}}
 +
 +** swap [#k4307db4]
 +動きます。
 +
 +ただし、postblitを持つ構造体のインスタンスをswapに渡すと、dmdがクラッシュします。
 +
 +** splitter [#ra66786b]
 +動きます。
 +
 +* 投票とコメント [#i21a3865]
 +#vote(大変参考になった,参考になった,あまり参考にならなかった,まったく参考にならなかった,#notimestamp)
 +#pcomment
  

  • Backup diff of Articles/CTFEableなPhobosのモジュール(No. All)
    • Cur: 2012-03-31 (Sat) 20:34:53 SHOO[3]