Python的一个子集,可以使用py2tMP编译器编译成C++元函数。

TM的Python项目详细描述


Build Status

TMPPPY是Python的一个子集,可以使用^ {TT1}$编译器编译成C++元函数。 本项目针对C++库开发人员,其库包括一个不平凡的C++量。 元编程。

<>与直接编写C++元编程代码相比,使用TMPPPY允许代码在A中表达 更简洁易读的方式,提供静态类型检查(避免了一些类的实例化时间 错误,并产生优化的C++元函数,减少C++编译的编译时间。

示例

例如,我们编写一个元函数(也称为类型特征类)add_pointer_multiple,这样:

  • add_pointer_multiple<T, 0>::typeT
  • add_pointer_multiple<T, 1>::typeT*
  • add_pointer_multiple<T, 2>::typeT**
  • (依此类推)

这可以作为模板编写,如下所示:

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文件。

这不是谷歌的官方产品。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaFX进度条从单独的函数更改而来   jvm使用java服务器选项   java在<li>元素中查找同名的最后一个链接   java问题将参数传递给不同公共类中的构造函数   如何在php中从java函数中获取字符串   java如何在Android中动态显示多个tile   java仅使用Ribbon而不使用任何服务注册表是否可以实现负载平衡?   Jersey 1.19版本的java Swagger JAXRS出现“冲突URI模板”错误   带H2数据库的java Spring boot jpa   从12:00:00到00:00:00的日期转换   Android中的java如何设置文本?   java密钥库“不支持的保护参数”   http使用Java在Java中发送httprequest。净包   SpringJava刷新数据库   java在Spring Boot应用程序中使用嵌入式MongoDb和MongoTemplate失败   java需要什么MatOfMatch对象?   xml使用Java中的合并算法将两个值合并为单个值   java SQLite数据库不保存数据为什么不工作