typename宣言
最近C++を真面目に使い始めたおかげでSTLの便利さを体感しているCASPAR003です、こんばんは。
今日はテンプレートクラスを作っている最中にwarning C4346: '...' : 依存名は型ではありません。
という警告が出て困っていましたが、モルタルコのプログラマ日記によると
要するにテンプレート引数
template<class T>
を使ったとき,T::x
を使用したときにコンパイラがそれが型なのか関数なのか瞬時に判断できないので,型であることを知らせるためにtypename C::x
としてくれという話。
という理由で、typename宣言が必要な場合があるようです。
書いている方は、完全に型名だと信じ込んで書いているから、文脈からは型かどうかを判定できない場合がある、ということに指摘されるまで気がつきませんでしたね。typename宣言の必要性をようやっと理解した、そんな1日。
投稿者 | CASPAR003 |
投稿時刻 | 23:24 |
カテゴリー | 雑記 |
コメント | 0 件 |
トラックバック | 0 件 |
記事へのリンク | http://www.caspar003.info/delta/archive/2011/04/21/2324.html |
コメント
- 投稿者
トラックバック
- トラックバック