Tangoが0.99.9になったらしい

次のバージョンが0.100.0になるかどうかは今後に期待するとして
http://www.dsource.org/projects/tango/changeset/5298
ゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴ…orz

追記

実はTangoの中でひそかに期待していたクラスタモジュール群はMangoへと移ったようだ

C++には敵わない

http://d.hatena.ne.jp/faith_and_brave/20100205/1265357617

import std.stdio;

class Hogeable
{
    Hoge this_;

    this(ref Hoge hoge) { this_ = hoge; }

    void opDispatch(string name, T...)(T args) const
    {
        writeln("entry : " ~ name ~ "function");
        mixin("this_." ~ name ~ "(args);");
        writeln("exit : " ~ name ~ "function");
    }
}

struct Hoge
{
    void foo() const { writeln("foo"); }
    void bar() const { writeln("bar"); }
}

void piyo(Hogeable obj...)
{
    obj.foo();
    obj.bar();
}

void main()
{
    Hoge hoge;
    piyo(hoge);
}

やっぱり可変長による初期化を使ってやるのは何か違う気がする(それにstructでは出来ないし).でもあのTwitterでのやり取りから色々考えたけど,強引にscope classを実現するにはこれしかない気もしてきた.この型安全な可変長引数はいまいちポジションががが.

追記

せめてもうすこし似せようかと思ったけど,コントラクタをtemplateにすると上の方法が使えなくなった.うむむ…