暗黙の型変換
いつものことながら Scala すごいなー。
C++ でも型 A に 型 B を引数によるコンストラクタが定義されていると暗黙に B=>A の変換が発生したり、演算子のオーバーロードで暗黙の変換が発生したりするけど、Scala のはひとあじ違う感じがする。
しかし、C++ のキャスト演算子の多重定義の文法はどうにかならなかったのかな。前置、後置のインクリメント/デクリメントもひどいと思うけど。
class Foo { public: Foo(int m) : n(m) { } // cast to int operator int() const { return n; } // post increment Foo operator++(int) { Foo f(n); n++; return f; } // pre increment Foo& operator++() { n++; return *this; } private: int n; };