templateのインスタンス化で存在しない型を使用している場合

gcc9.2.0でコンパイル

 

 

“no matching template for A::GetValue” この文章の template って何を指しているのか?自分的には TypeTraits::Type 型が無いと言って欲しいのだが。僕はこのエラーメッセージから型が間違っているなんて推測できない。なお、スコープ解決演算子を使わずに型名を間違えた場合は “doesn’t name a type” のエラーになりこれは期待したエラーメッセージ。

因みに、インスタンス化で template パラメータの数が違う場合は “does not match any template declaration” のエラーが出る。