人々はgrepのような方法でコードを読んだり比較したりしないので、すぐにこれがTemplate argument for non-type parameter must be an expressionの複製ではなく、私がそれを読んだ後に考えた別のものであると言います。したがって、これを全体として読んで、クラス名を見るだけではありません。テンプレートのパラメータにテンプレートのオーバーロードが適用されないのはなぜですか?
template <typename T, int N>
struct Vector {
T data[N];
};
struct Dynamic {
};
template <typename T, Dynamic>
struct Vector {
T* data;
};
私は、コンパイル時の整数を受け取るテンプレートと、タグとして使用する型を受け取るテンプレートの2つが必要です。
何らかの理由で2番目のテンプレートが最初のテンプレートの特殊化(または再定義?)として解釈されるため、これは機能しません。
なぜテンプレートはテンプレートパラメータよりも曖昧さがありませんか?このための論理的/コンパイルの理由は何ですか?
あなたは尋ね続けることができますが、あなたが望む答えを得ることはできません:-S言語はあなたにそれをさせるものではありません。 –
私はちょうど不思議です、これは再ポストのように見える場合はごめんなさい。テンプレートのオーバーロード(タイプやタイプ以外のパラメータタイプが異なる)が悪いアイデアになるのはなぜか分かりません。 – Dean
確かに、これは良いアイデアを気にするウェブサイトではありません。 –