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