如何在C ++中预先计算模板类型并在不同的模块中使用它

时间:2013-08-22 11:26:07

标签: c++ templates g++

我有编译器优化问题。

让A,B,C三个类和static_update_manager另一个类实现。

static_update_manager必须如下使用:

typedef typename static_update_manager<A>::type manager_t;                

manager_t的定义放在名为manager.hpp和的头文件中 该标头被许多模块使用。

在编译过程中,计算static_update_manager :: type 并替换为

static_update_manager_lst< boost::mpl::vector<A, B, C> >                    

计算manager_t类型的时间很长,占用大量内存。 问题是所有模块都在执行微积分 但是,事实上,我们需要做一次这样的工作。

有没有C ++机制来做到这一点?

一个想法可能是使用gcc将文件manager.hpp转换为另一个文件
manager_compiled.hpp看起来像:

typedef typename static_update_manager_lst< boost::mpl::vector<A, B, C> > manager_t;

并在所有模块中使用manager_compiled.hpp而不是manager.hpp。

但我不知道如何正确地做到这一点。

我有一个可怕的解决方案:
 我们的想法是创建一个脚本,编译包含错误的源代码  manager_t的类型,然后用中的grep提取计算的类型  命令构造标题manager_compiled.hpp。

0 个答案:

没有答案