2005年6月 8日

(((foo))) in C++

Scheme の

gosh> (define (foo) foo)
foo
gosh> (((foo)))   ; いくらでも括弧を増やせる

みたいなことは C じゃできないよね、と知人に訊いたところ、C++ ならできるよ、と教えてもらった。

class Foo {
public:
    Foo& operator() () { return *this; }
};
int main(int argc, char *argv[])
{
    Foo foo;
    foo()()(); // いくらでも括弧を増やせる
    return 0;
}

boostコマンドラインオプション解析ライブラリでは、同様の方法を使ってオプションの定義を書くようだ (参考)。

投稿者 satoru : 固定リンク | このエントリーを含むはてなブックマーク  

2005年6月 1日

Emacs のブックマークを自動保存

複数の emacs を立ち上げているときにブックマークの更新が他の emacs に反映されずに不便だったので、次のような設定を加えた。 bookmark-set の直後に毎回ブックマークを保存して、bookmark-jump の直前に毎回ブックマークを読み直す、という設定。
(defadvice bookmark-set (around bookmark-set-ad activate)
  (bookmark-load bookmark-default-file t t) ;; 登録前に最新のブックマークを読み直す
  ad-do-it
  (bookmark-save))

(defadvice bookmark-jump (before bookmark-set-ad activate)
  (bookmark-load bookmark-default-file t t))
関連文書:
投稿者 satoru : 固定リンク | このエントリーを含むはてなブックマーク