2011-01-29 5 views
1

tisコードで何が問題になっていますか?C++、コンパレータとテンプレート

template <typename T, template <typename> class GList> 
struct TSet 
{ 
    typedef std::set <unsigned int, sortIndices <T, GList> > Type; //Error, too many template arguments 
}; 


template <typename T, template <typename> class GList> 
class sortIndices 
{ 

    private: 
      const GList <T> *l; 

    public: 
      sortIndices (const GList <T> *l_) : l (l_) {} 

      bool operator() (const unsigned int &i_p1, const unsigned int &i_p2) const 
      { 
        ... 
      } 

}; 
+0

::Typeを使用していますhttp://www.ideone.com/VxBrh
例:

は、この自分自身を参照してください?どの線が指していますか?インスタンシエーションスタックとは何ですか? –

+4

うーん、このコードに何が*間違っていますか?それはコンパイルされませんか?あなたが期待することはしませんか? –

+0

また、 'TSet'の定義での使用の上に' sortIndices'の宣言がありますか? –

答えて

2

コンパイルが正常です。あなたがする必要があるのは、の後にTSetと定義するだけです。正確にあなたが得るのですかどのようなエラーhttp://www.ideone.com/uRWur

+0

@Nawaz:私はダウンボートを変更してコメントを削除しました。 –

+0

@Jeremiah:ありがとう。私も私のものを削除しました。 :-) – Nawaz

+0

'main()'に ':: Type'を追加してもコンパイルされません。 –