C++ 如何减少TMP&;的编译时间;C+中的宏预处理器元编程+;?

C++ 如何减少TMP&;的编译时间;C+中的宏预处理器元编程+;?,c++,templates,profiling,C++,Templates,Profiling,有什么技巧可以处理大量元编程代码吗 我正在使用最新版本的clang。但是我可以切换到任何支持C++14的(免费)编译器 或者,有什么技巧可以处理大量的数据吗 元编程代码 与TMP函数相比,更喜欢constexpr-函数,它们通常更快。由于C++14还可以在constexpr函数中使用不止一个工作代码的返回语句,这使得它们的使用更加简单。 通常避免递归。而且,只要算法编译速度快,就不要太在意算法本身的复杂度。(在TMP代码中,获得更好的复杂度类会导致编译速度大大降低) 不要像这样对可变模板使用递归

有什么技巧可以处理大量元编程代码吗

我正在使用最新版本的clang。但是我可以切换到任何支持C++14的(免费)编译器


或者,有什么技巧可以处理大量的数据吗 元编程代码

与TMP函数相比,更喜欢
constexpr
-函数,它们通常更快。由于C++14还可以在constexpr函数中使用不止一个工作代码的返回语句,这使得它们的使用更加简单。 通常避免递归。而且,只要算法编译速度快,就不要太在意算法本身的复杂度。(在TMP代码中,获得更好的复杂度类会导致编译速度大大降低)

不要像这样对可变模板使用递归:

template< typename First, typename ... Tail >
struct A : A<Tail...>
模板
结构A:A
它们产生了二次时间复杂性,因为编译器必须在每个步骤中创建单独的参数列表!这是非常可衡量的。尝试将递归委托给程序中的一个点,最好的方法是将其委托给,然后将所有内容都推导出该点


不要使用Boost.PP生成许多处理案例的部分/显式专门化。这没用。200个显式特殊化只会让事情变得更糟,因为编译器必须搜索特殊化(在主模板旁边)并查找第一个和最专业化的匹配项。

另一个关闭原因:要求使用非现场工具……或者,是否有任何技巧可以处理大量元编程代码?我还要求提供一种方法。但是谢谢你的注意。