C++相談室 part58
■ このスレッドは過去ログ倉庫に格納されています
0091デフォルトの名無しさん
2007/09/30(日) 20:19:13class 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)の使用は歓迎です。
よろしくおねがいします。
■ このスレッドは過去ログ倉庫に格納されています