謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

DMD 2.015キタコレ

凄い凄い。テンプレート周りのバグ修正、新機能。
ニュースフォーラムでも話題でてるけど、auto foo()(){return 10;}と書ける。

関数テンプレートにはif付けられないんだな。まぁ二つの文に分ければうまくいくけど。


expression.dにif使ってみたけど何かおかしげ。要検討。


以下がダメ。

import std.stdio;
class Foo{
  Foo opSub(T:Foo)(T x){
    return this;
  }
  Foo opSub(T)(T x){
    static assert(0);
  }
  template opSub_r(T) if(!is(T:Foo)){
    Foo opSub_r(T x){
      static assert(0);
    }
  }
}

void main(){
  Foo x = new Foo, y = new Foo;
  x - y;
}



autoもおかしげだなぁ。メンバ変数に使えないとか? 要検討。


うーん、以下がダメだ。

import std.stdio;
auto foo(TL...)(TL tl){
  return tl[0];
}

void main(){
  writefln(foo(2));
}



なんぞこれ

import std.stdio;
template test(int x:10){
  enum test = x;
}

void main(){
  writefln(test!(10));
}
import std.stdio;
template test(alias int x){
  alias x test;
}

void main(){
  writefln(test!(10));
}