- 91 名前:デフォルトの名無しさん [2007/09/30(日) 20:19:13 ]
- クラスの内側で定義したクラステンプレートを特殊化する、
class X { template<typename T> class Y {}; template<> class Y<int> {}; }; のようなコードは、VC++(2003/2005)ではコンパイルできますが、g++3/4では error: explicit specialization in non-namespace scope ‘class X’ というエラー になってしまいます。 Y<int>をXの中ではなく、名前空間スコープで template<> class X::Y<int> {}; と書けばg++でもVC++でも問題なく特殊化できることは知っているのですが、 なんとかg++で、特殊化されたクラスの定義をXの中に書く方法はないでしょうか? Y<T>とY<int>の定義が離れた場所にあると、コードが読みにくいと思うのです。 boost(特にmpl)の使用は歓迎です。 よろしくおねがいします。
|

|