Overload ResolutionとPartial Orderingの説明が面倒だ。果たして、本当に詳しく説明する必要があるのだろうか。詳しく説明するというのは、実際のルールを細かく説明するという意味である。
何が面倒かというと、ルールが実に多いからだ。ポインターの場合は、ポインターにCV qualifierがつく場合は、リファレンスの場合は、リファレンスにCV qualifierがつく場合は、lvalueとrvalueリファレンスの違いについてなど、あまりに説明しなければならない事項が多すぎる。
仮に説明したとしても、これらの細かい規則を覚えておくことは、実際のプログラミングにおいて、何の役にも立たない。何故ならば、これらの細々とした規則は、より人間に取って自然になるように、20年ほど議論された結果だからだ。ルールを知らなくても、人間に取って自然に動くように設計されている。(もちろん、時として意外な結果をもたらすことはあるが)
参考書を書きたいと思った動機の一つに、これらのルールを細かく説明したいということもあった。しかし、実際に説明しようと思ってみると、どうも規格の文面の翻訳以外の言葉が思いつかない。翻訳というのは危険であり、頼ってはならない。規格を翻訳するぐらいなら、最初から規格を読めばいいのだ。
C++ Templatesですら、Overload ResolutionやPartial Orderingは、概要ぐらいしか説明していない。結局、細かく説明しても意味がないからだろう。
やはり、このふたつは、概要の説明ぐらいにとどめたほうがいいのかもしれない。
No comments:
Post a Comment
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.