是否有任何可以处理大量元编程代码的技巧?
我正在使用最新版本的clang。但我可以切换到支持C ++ 14的任何(免费)编译器。
答案 0 :(得分:1)
或者,是否有任何可以处理大堆的技巧 元编程代码?
首选constexpr
- 功能到TMP功能,它们通常更快。从C ++ 14开始,你还可以在constexpr函数中使用多个返回工作代码语句,这样可以更加轻松地使用它们。
一般避免递归。并且不要过多关心算法本身的复杂性类,只要它编译得快。 (在TMP代码中,获得更好的复杂性类可能会导致编译速度变慢)。
不要像使用变量模板一样使用递归:
template< typename First, typename ... Tail >
struct A : A<Tail...>
它们创建了二次时间复杂度,因为编译器必须在每个步骤中创建单独的参数列表!这是可以衡量的。请尝试将递归委托给程序中的一个点,最好的方法是将其委托给std::make_index_sequence
,然后将所有内容推导出来。
不要使用Boost.PP来生成处理案例的许多部分/显式特化。它没有任何帮助。 200个显式的特殊化只会使情况变得更糟,因为编译器必须搜索特殊化(在主模板旁边)并寻找匹配的第一个也是最专业的一个。