- 435 名前:デフォルトの名無しさん [2008/04/08(火) 17:57:59 ]
- キーワードtypenameの意味が分かりません。テンプレートを定義するときに
よく使われるようですが、なくても良いような気がします。例えば、 プログラミング言語C++のp.599にある bind2nd の定義のtypenameを取って コンパイルしてみましたが、コンパイルが通って、テストコードがきちんと 動きました。typenameの存在意義を教えていただけないでしょうか。 こういう場合にtypenameがなければ困るという分かりやすい例が欲しいです。 // ----- プログラミング言語C++(p.599)より ----- template <class BinOp> class my_binder2nd : public unary_function<BinOp::first_argument_type, BinOp::result_type> { // my_を付けて実験 protected: BinOp op; typename BinOp::second_argument_type arg2; // このtypenameを取ってみた。 public: my_binder2nd(const BinOp& x, const typename BinOp::second_argument_type& v) // このtypenameも取った。 : op(x), arg2(v) {} result_type operator()(const argument_type& x) const { return op(x, arg2); } }; template<class BinOp, class T> my_binder2nd<BinOp> my_bind2nd(const BinOp& op, const T& v) { return my_binder2nd<BinOp>(op, v);
|

|