0

私はテンプレートメタプログラミングにかなり新たなんだと、このアプローチでは、私の思考のエラーを見つけることができません。特化関数テンプレート結果

template <typename T> 
    typename T::ReturnType Query(const std::string& Str); 

template <> 
ResultTypeRowCount Query(const std::string& Str) { return this->queryRowCount(Str); } 

ResultTypeRowCountは名前がReturnType読書のための

ありがとうと公共のtypedefを実装

+0

ここで何をしようとしていますか? C++はあなたの関数の戻り値の型を推論しません。なぜなら、単に引数が与えられれば、 'T'を推論する方法がないからです。ここで期待される行動は何ですか? – templatetypedef

+0

私は何らかのリターン型オーバーロードをアーカイブしたいと思っています。テンプレートを仮想として宣言することはできないので、関数を専門にマップします。 – Mythli

答えて

2

それは次のようになります。

template <> 
ResultTypeRowCount::ReturnType Query<ResultTypeRowCount>(const std::string& Str) { return this->queryRowCount(Str); } 
1

Specializiテンプレートはこのパターンに従う必要があります:

template<typename T> 
    void foo() { 
    } 

template<> 
    void foo<int>() { 
    } 
+0

質問者が間違っていた正確なものの1つにあなたの応答が光沢を残している点を除いて、正しいアイデア。 – Novelocrat

+0

それは本当です。私はテンプレートのメタプログラミングの概念が欠けているとコメントしましたが、最も関連性が高いと思われました。魚を習うことを学ぶ。 –

関連する問題