C++相談室 part58 ..
[2ch|▼Menu]
91:デフォルトの名無しさん
07/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)の使用は歓迎です。
よろしくおねがいします。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5377日前に更新/51 KB
担当:undef