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 のコマンドラインオプション解析ライブラリでは、同様の方法を使ってオプションの定義を書くようだ (参考)。
(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))関連文書: