可能性の重複:
Where and why do I have to put the “template” and “typename” keywords?C++の特性と専門
私は簡潔に、いくつかの一般的なルーチンに関連したタイプを関連付けるために私を可能にするために、初めての特性を使用しようとしています。しかし、私は構文に苦しんでいるし、グーグルはこの種のものを実装するための簡単な例を示していないようだ。ここで私は、現在持っているものの凝縮例です。
template <typename T> struct foo_traits { };
template<> struct foo_traits<int> {
typedef unsigned char T2; // sub-type for int specialisation of foo_traits
};
template <typename T> T foo(void)
{
typedef foo_traits<T> traits_type; // OK
typedef traits_type::T2 T2; // error here: "Too few template-parameter-lists"
T i
T2 j;
// ...
}
私は私の汎用テンプレート機能foo
でそれを使用できるようにfoo_traits
からT2
のtypedefを取得するための正しい方法は何ですか?
ことになっているコンパイラに指示する必要があります。 FAQの項目を見つけてみましょう... – Mankarse
ありがとうございます - 私は当然最初に検索しようとしましたが、関連する複製を見つけることができれば感謝しています –
また、どのようにして一般的なケースで機能すると思いますか? 'int'以外の' T'の場合、 'traits_type :: T2'は単に存在しません。 – Mankarse