2017-05-30 10 views
0

VS2008でコンパイルされたこのクラス定義(ここでは簡略化)があります。 VS2017で、私は、最初のアングルブラケットの構文エラーC2059を取得:テンプレートクラス定義がVS2017でコンパイルされない

template < typename Function, typename Base, typename Specialiser = Base > 
class FunctionTermBase : public Base 
{ 
public: 
    // typedef typename Function::result_type result_type; 
    typedef typename Base term_type; 
    typedef typename Specialiser specialiser; 

protected: 
    FunctionTermBase() { } 

public: 
    template <typename T> 
    struct Specialise { 
     typedef typename specialiser::Specialise<T>::type type; 
    }; 
}; 

誰かがこのコードで間違っているものを私に伝えることができれば、私は感謝したいですか?

+0

***最初の山括弧に構文エラーC2059があります。***正確なエラーメッセージのテキストを質問に追加すると役立ちます。 – drescherjm

答えて

3

次の従属名にもテンプレート引数があることを示すには、templateキーワードを使用する必要があります。さらに、識別子がすでにタイプであることがわかっているので(テンプレート引数であるため)、typenameはあなたのtypedefには必要ありません。

関連する問題