Visual C++でしかコンパイルできないコードその2です。今回は「メンバーテンプレートの明示的特殊化をクラス定義内に書く」です。
class hoge { template<typename T> class piyo {}; template<> class piyo<int> {}; }; |
GCCやClangではコンパイルエラーになります。一方、Visual C++は2013でも通してしまいます。
正しくは、このようにクラス定義の外に書きます。
class hoge { template<typename T> class piyo {}; }; template<> class hoge::piyo<int> {}; |
たまにGCCやClangでコンパイルすると、こういう発見があって面白いです。これを読んでくださっている皆様は、ぜひこのようなコードを書かないようにしましょう。
スポンサード リンク |