看看这个简单的程序。
#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字节。
为什么没有模板版本的函数要生成更多的二进制代码?