この簡単なプログラムを参照してください
#include <cstdio>
#include <cstdlib>
void foo(){ printf("%d",1); }
int main(){ foo(); }
Linuxで gcc 4.6.4 -std=c++0x -O2 -g -Wall でコンパイルします。そしてバイナリファイル 11`238 バイト。
しかし、このコードは 11`150 バイトになります:
#include <cstdio>
#include <cstdlib>
template< bool = false> void foo(){ printf("%d",1); }
int main(){ foo(); }
また、clang 3.3 でテストしたところ、結果は 5684 バイトとそれに応じて 5636 バイトになりました。
テンプレート バージョン関数がバイナリ コードを作成しないのはなぜですか?