不思議なことに繰り返し発生するテンプレートパターンについて考えています。
私はそれが非常に便利だと思うし、多くのタスクに対してかなりうまく調整できる。しかし、私は認めなければなりません、私は野生でCRTPコードの多くを見ません。
把握するのは難しいですか?仮想機能は全体的に簡単ですか?仮想キーワードが表示されるケースの90%で使用すべきではありませんか?
不思議なことに繰り返し発生するテンプレートパターンについて考えています。
私はそれが非常に便利だと思うし、多くのタスクに対してかなりうまく調整できる。しかし、私は認めなければなりません、私は野生でCRTPコードの多くを見ません。
把握するのは難しいですか?仮想機能は全体的に簡単ですか?仮想キーワードが表示されるケースの90%で使用すべきではありませんか?
回答:
単純な事実は、ほとんどではないにせよ、多くのC ++ユーザーがvector
、malloc
およびを上回ることをほとんど把握できないことです。そのfree
ため、高度なテンプレートメタプログラミングを評価するだけでなく実装できる数はそれほど多くありません。これは、たとえそれが90%の状況に適していたとしても、人々がそれやその使用方法を知らないという理由だけで、はるかに少なく見えることを意味します。
ただし、仮想関数には利点があります。つまり、仮想関数はCRTPよりも使いやすいです。C ++テンプレートは、事実上すべてのものについて意地が悪いことで有名であり、包含モデルはボールを吸います。
ただし、[仮想関数]は明らかに遅く、強力ではありません。たとえば、私は現在、CRTPを使用してコードを記述しています。CRTPでは、式テンプレートで使用する演算子オーバーロードを継承します。仮想関数がそれを機能させる方法はありません。
広く使用されない理由は次のとおりです。