2016-09-12 10 views
1
template <typename T> 
class Foo { 
public: 
    T val; 
    Foo(T p_val) : val(p_val) {} 
    T sum(Foo<T> other) { return val + other.val; } 
}; 

int main() { 
    Foo<int> f1(3); 
    Foo<int> f2(5); 
    std::cout << f1.sum(f2) << std::endl; 
} 

これは、期待通りに8を出力します。テンプレートクラス関数の構文のテンプレートクラス引数

メンバ関数のシグネチャをT sum(Foo other)<T>を削除して)に変更しても、それでも8が出力されます。一般的には、私がその<T>を含めるかどうかは重要ですか?私はVisual C++ 2015を使用しています。

答えて

2

template<...> class Xの中で、非テンプレートとして名前X<...>を参照しています。

したがって、<T>は重複しています。合法ですが、冗長です。

関連する問題