2017-12-13 10 views
4

私はクラスfooに2つのテンプレート関数Add()Subtract()を含んでいます。テンプレート以外のクラス内の複数のテンプレート関数

struct foo 
{ 
    template <typename U> 
    U* Add(); 
    template <typename U> 
    U* Subtract(); 
}; 

は、それらの両方に同じテンプレートパラメータUを使用することが正しいですか?また、テンプレート関数宣言の前に毎回template <typename U>と書く必要がありますか?

+0

コードがコンパイルされましたか?メンバ関数のテンプレートが宣言されている方法に関して、非メンバ関数のテンプレートと異なると思われるのはなぜですか? –

+3

@DietmarKühlコードがコンパイルされているということは、コードが以下のような十分な証拠ではありません。正しいb。意図どおりに動作します。 – SergeyA

+0

@SergeyA:true。しかし、例えば完全に異なる2つのコンパイラを使用して、両方がコードを飲み込んでいるかどうかを確認することは、問題が正常であることを示すものです。また、それはまだ残っています。メンバー以外の関数テンプレートと比べて、何が違うのでしょうか? –

答えて

7

はい、引数の名前を同じにするのと同じ方法で、異なる関数でテンプレートパラメータに同じ名前を使用できます。異なる機能の名前は完全に無関係です。

また、C++文法でキーワードtemplateを使用する必要があります。

関連する問題