C++相談室 part58
..
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