functor argで動作するメソッドを記述します。 2番目の宣言は、クラス全体をTとファンクタのテンプレートとして宣言するのを避けることを可能にしました。テンプレートクラスclassNameが1つのパラメータTのクラス内にありましたが、そのクラス内にメソッドが別のパラメータファンクタを持っていましたが、クラス全体を2つのパラメータのテンプレートとして宣言しませんでした。 それは働いたが、私はそれを完全に理解していなかった。違い各
Q
違い各
6
A
答えて
3
第2の変形は、言語ルールによってお客様のケースで適切です。/1
と続くクラステンプレートのテンプレートパラメータを指定しなければならないクラス・テンプレート定義の外で定義されたクラステンプレートのメンバー テンプレート
n3376 14.5.2メンバーテンプレートのテンプレートパラメータ。
[例:
template<class T> struct string { template<class T2> int compare(const T2&); template<class T2> string(const string<T2>& s) { /∗ ... ∗/ } }; template<class T> template<class T2> int string<T>::compare(const T2& s) { }
- 終了例]
3
最初のクラス テンプレートtemplate< typename T, typename functor > class className
の(非テンプレート)メンバ関数です。第二は、例えば、 クラステンプレートtemplate <typename T> class className
のメンバ関数テンプレートです:
まず:
template <typename T, class Functor >
class ClassName
{
ReturnType functionName(Functor f);
};
第二:
template <typename T>
class ClassName
{
template <typename Functor>
ReturnType functionName(Functor f);
};
あなたはそれを徹底的に理解していなかったと言うが、あなた のように見えます:2番目のケースでは、クラス テンプレートは1つのパラメータだけを持っていますが、インスタンス化の後でさえも (タイプ0の定義)、メンバ関数はテンプレート のままです。これは多くの異なる型でインスタンス化できます。 それは関数テンプレートなので、テンプレート引数 の控除が適用されるので、型を指定する必要はありません。 コンパイラは、 関数を呼び出すと、それ自身のためにそれを計算します。
関連する問題
- 1. RFツリーとCARTツリーの各ツリーの主な違いは?
- 2. 各ファイルを各フォルダにコピー
- 3. PowerPoint vba - MasterViewの各レイアウトの各シェイプについて
- 4. 違いダウンケースとダウンケースの違い! Rubyで
- 5. 各テキストボックスループについて
- 6. 違い
- 7. 違い
- 8. 違い
- 9. 違い?
- 10. 違い
- 11. 違い
- 12. 違い
- 13. 違い/
- 14. 違い
- 15. 違い
- 16. 違い
- 17. 違い
- 18. 違い
- 19. 違い
- 20. 違い::)
- 21. 違い[]
- 22. 違い
- 23. 違い
- 24. 各バーの幅が違う、geom_barとggplot2の "position = fill"を使って
- 25. [X、Y、Z]の違いは何ですか?各{| m | m}を含み、X、Y、Zを含む?
- 26. 違いとMVC
- 27. 違いは()
- 28. にStringWriter - 違い
- 29. 主な違い
- 30. 違いは
ありがとうございます。理解しています。 –