は、非常に多くの場合、特に図書館、形質クラスなどでのC++クラス定義では、次のスニペットのようなコードを参照してください。typenameテンプレートのパラメータが暗黙的に型として認識されないのはなぜですか?
template <typename Bar, typename Baz>
class Foo {
using bar_type = Bar;
using baz_type = Baz;
// ... etc.
}
をそして唯一のこれらの行を後でFoo<A,B>::bar_type
またはFoo<C,D>:baz_type
を参照することができます。私は疑問に思っています:なぜ、言語標準では、typenameテンプレートパラメータを使用して型を自動的に定義する必要がありません、そして、としてA
とFoo<C,D>::Baz
をD
と認識しますか?
Fooでは識別子バーとBazが既に使用されているため、既存のコードを破損すべきではありません。
タイプではない可能性があります。たとえば、 'templateの構造体配列NのNのような値かもしれません。 –
davidbak
これらは必ずしも必要ではなく、それらを公開するとクライアントコードが結合される可能性があります公衆になるエイリアスを意味しています。) – juanchopanza
別の答え:それは自分自身を行うことは自明であるからです。誰かがなぜC++に 'super 'キーワードがないのか尋ねられたときの答えはどれですか(しかし私はそれを手元に置いていません)。 – davidbak