この次のコードに疑問を抱きました
struct base {};
struct derived : public base {};
template <class T>
struct Type { };
template <> struct Type<base> {
typedef float mytype;
};
typename Type<base>::mytype a=4.2; // this works
typename Type<derived>::mytype a=4.2; // this doesnt
クラステンプレートオブジェクトをインスタンス化できない理由を誰かが説明し、derived
それを行う簡単な方法を提案できますか? 私が興味を持っている実際の問題については、テンプレートクラスオブジェクトをインスタンス化したり、typedefs を使用したりするために使用する多くの派生クラスがあります。私が個別に専門化したいものよりも、それらの数が多すぎます。
編集: 言い忘れましたが、これは C++03 である必要があります