私がC++に欲しい機能として、関数内での関数定義が挙げられる。
void A(void) { void B(void) { printf("hello B\n"); } B(); }
些細なコールバック関数のために大域的な名前空間を汚したくないから。
既にgccの拡張ではできる。
見通しが悪くなるという意見に対しては、こんな記法を導入すればよい。
但し、Cとの互換性に深刻な問題が発生するので、あくまで余興としての提案である。
void A::B(void) { printf("hello B\n"); } void A(void) { void B(void); B(); }
要するに関数もクラスと同様に名前空間の一種として扱うわけだ。
ネステッドクラスの記法と一貫性があって不自然ではないと思うんだけど。