Tem*_*Rex 11 c++ templates counter instantiation template-meta-programming
给定模板元程序(TMP),C++编译器是否会生成计算实例化类数的构建统计信息?或者有没有其他方法可以自动获取此号码?因此对于例如对立的因子
#include <iostream>
template<int N> struct fact { enum { value = N * fact<N-1>::value }; };
template<> struct fact<1> { enum { value = 1 }; };
int main()
{
const int x = fact<3>::value;
std::cout << x << "\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想回到数字3(因为事实<3>,事实<2>,事实<1>被实例化).这个例子当然是微不足道的,但每当你开始使用例如Boost.MPL时,编译时间真的会爆炸,我想知道有多少是由于隐藏的类实例化造成的.我的问题主要是针对Visual C++,但是gcc的答案也会受到赞赏.
编辑:我目前非常脆弱的Visual C++方法是从Stephan T. Lavavej的视频/d1reportAllClassLayout 之一添加编译开关,并在输出文件上执行grep +字数,但它(a)极大地增加了编译时间,并且(b)正则表达式很难100%正确.
| 归档时间: |
|
| 查看次数: |
1219 次 |
| 最近记录: |