Visual Studio 2005 Part 24
at TECH
145:デフォルトの名無しさん
08/04/08 01:15:04
>>137
VC++6.0 はかなーーーーーーーーーりテンプレートの実装が怪しい。
部分特殊化ができないとかは仕様が決まるのが遅かったのだと解釈できるとしても、
・ メンバ関数テンプレートに明示的にテンプレート引数を指定できない
(しかもエラーメッセージが意味不明)
・ クラステンプレート内のメンバ関数テンプレートはクラス宣言内に直接記述する形でしか作る事ができない。
(クラステンプレートのメンバ関数はクラス宣言内に直接記述する人も多いので、これはまあ、あまり大きな問題ではないが)
・ 関数テンプレートの整数値のテンプレート引数を取る場合、
複数実体化しようとしても全ての実体が共有されてしまうバグがある。
(hoge<1>(); hoge<2>(); と呼ぶと、両方 hoge<2>(); の呼び出しになってしまう!)
・ テンプレート引数を以降の値型のテンプレート引数の定義に利用することが出来ない場合がある。
(細かいバージョンによって template <typename T, void (*Fn)(const T& value)> とかが無理な場合がある)
・ 複雑なテンプレートを利用すると内部エラーになることがある。
(メンバ関数ポインタにテンプレート引数を絡めるとエラーになることがあったり)
とか、バグが多い。
特に、関数テンプレートの実体が共有されるバグは致命的で、知らなきゃハマること請け合い。
ダミーのクラステンプレートを作って hoge(value<1>()); hoge(value<2>()); みたいなことをすれば回避できるが。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4217日前に更新/154 KB
担当:undef