Quantcast
Channel: イグトランスの頭の中
Viewing all articles
Browse latest Browse all 123

Visual C++でしか動かないコード:明示的特殊化

$
0
0

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でコンパイルすると、こういう発見があって面白いです。これを読んでくださっている皆様は、ぜひこのようなコードを書かないようにしましょう。

Visual C++でしか動かないコード:明示的特殊化 is a post from: イグトランスの頭の中(のかけら)


Viewing all articles
Browse latest Browse all 123

Trending Articles