Python的一个子集,可以使用py2tMP编译器编译成C++元函数。
TM的Python项目详细描述
TMPPPY是Python的一个子集,可以使用^ {TT1}$编译器编译成C++元函数。 本项目针对C++库开发人员,其库包括一个不平凡的C++量。 元编程。
<>与直接编写C++元编程代码相比,使用TMPPPY允许代码在A中表达 更简洁易读的方式,提供静态类型检查(避免了一些类的实例化时间 错误,并产生优化的C++元函数,减少C++编译的编译时间。示例
例如,我们编写一个元函数(也称为类型特征类)add_pointer_multiple,这样:
- add_pointer_multiple<T, 0>::type是T
- add_pointer_multiple<T, 1>::type是T*
- add_pointer_multiple<T, 2>::type是T**
- (依此类推)
这可以作为模板编写,如下所示:
template <typename T, int64_t n> struct add_pointer_multiple { using type = typename add_pointer_multiple<T, n - 1>::type*; }; template <typename T> struct add_pointer_multiple<T, 0> { using type = T; };
然而,这种语法相当冗长,可读性不强。对于更复杂的元函数,这将成为一个重要的问题,导致在调试或维护代码时出现更多的错误和更大的工作量。
一些C++元编程库(特别是Boost的MPL库)可以用来减少冗长,但是这是以较慢的编译时间为代价的。
使用tmppy,上述内容可以写成:
def add_pointer_multiple(t: Type, n: int) -> Type: if n == 0: return t else: return Type('T*', T=add_pointer_multiple(t, n-1))< TPPPY代码,然后可以编译成C++代码,相当于上面的元函数(没有MPL的开销)。
有关tmppy的更多信息,请参见the wiki。
许可证
tmppy是在apache 2.0许可下发布的。有关详细信息,请参阅LICENSE文件。
这不是谷歌的官方产品。