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