2011-04-24

Overload ResolutionとPartial Orderingの説明が面倒だ

Overload ResolutionとPartial Orderingの説明が面倒だ。果たして、本当に詳しく説明する必要があるのだろうか。詳しく説明するというのは、実際のルールを細かく説明するという意味である。

何が面倒かというと、ルールが実に多いからだ。ポインターの場合は、ポインターにCV qualifierがつく場合は、リファレンスの場合は、リファレンスにCV qualifierがつく場合は、lvalueとrvalueリファレンスの違いについてなど、あまりに説明しなければならない事項が多すぎる。

仮に説明したとしても、これらの細かい規則を覚えておくことは、実際のプログラミングにおいて、何の役にも立たない。何故ならば、これらの細々とした規則は、より人間に取って自然になるように、20年ほど議論された結果だからだ。ルールを知らなくても、人間に取って自然に動くように設計されている。(もちろん、時として意外な結果をもたらすことはあるが)

参考書を書きたいと思った動機の一つに、これらのルールを細かく説明したいということもあった。しかし、実際に説明しようと思ってみると、どうも規格の文面の翻訳以外の言葉が思いつかない。翻訳というのは危険であり、頼ってはならない。規格を翻訳するぐらいなら、最初から規格を読めばいいのだ。

C++ Templatesですら、Overload ResolutionやPartial Orderingは、概要ぐらいしか説明していない。結局、細かく説明しても意味がないからだろう。

やはり、このふたつは、概要の説明ぐらいにとどめたほうがいいのかもしれない。

No comments: