昨日は、久しぶりに、私の契約しているISPが規制されていなかったので、2chに書き込んだ。書いた後、結構まとまっていると感じたので、ブログにも書いて、保存しておくことにした。コンセプトが廃止になった理由について。
コンセプトが廃止になった理由は、いろいろあるが、直接には、concept mapを、暗黙的に生成するかどうかだった。
あるコンセプトに対して、対応するコンセプトマップを、暗黙的に生成するか、 あるいは、たとえ、コンセプトマップが空でも、明示的に定義させるべきかという問題があった。 つまり、ある型は、そのコンセプトの要求を満たしていると言うことを、明示的に宣言しなければならないわけだ。 こうすることによって、たまたまシグネチャが一致したのではなく、明確に、この型はこのコンセプトを満たしているんだと宣言できる。
ただ、このやり方は、殆どの場合、空のコンセプトマップを、ただ、そのコンセプトを満たしているという宣言のためだけに、書かなければならない。
それはどうなんだと。そんなの面倒で、誰もやらないぜと。
フランクフルト会議での解決策は、デフォルトのコンセプトには、暗黙的に、対応するコンセプトマップが生成され、 explicitをつけた場合、コンセプトマップを(たとえ空でも)、明示的に宣言しなければならないという提案だった。
ただ、やはりコンセプトというのが、非常に微妙で、ある意味では、厳格すぎるし、なかなか難しい機能だった。 コンセプトのコードを正しく書くのは、非常に難しい。
さらに、まともな実装もなかった。Douglas GregorのConcept GCCは、かなり不完全な実装で使い物にならなかった。
まあ、そんなわけで、標準化委員会の中にも、「もういいだろ」って雰囲気が漂っていた。 そこにきて、この根本的な思想の違いをきっかけに、投票が行われた。 すでに入っているConceptを、ドラフトから削除するという投票。 これには、Bjarne Stroustrupも、Douglas Gregorも、削除の票を投じた。
そんなわけで、コンセプトは削除された。
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.