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第三方库


热门话题
java本机方法的源代码可用吗?   java如何使父方法抛出异常?   java Android以编程方式设置不同屏幕大小/密度的布局   java如何使用一个变量来管理所有客户端请求   java输入一个txt文件,每行有一组数字   json java从jsonobject获取jsonarray错误   java将一个(WAV)写入一个文件只会说一个单词(最后一个单词)   java Telnet忽略原始字节   proguard java。运行桌面应用程序时出现lang.VerifyError   java用左键移动JLabel?   java如何在jText区域验证选项卡?   文件服务器客户端Javasocket编程中的字符串搜索   java省略了JSTL中的最后一个逗号<c:out>   java如何找到if或else代码已执行的次数?   java JavaScript WebSocket send()方法未执行   浮点数声明上的java标识符预期错误   java这是指二进制搜索算法吗?   编译mod at:reobfJar java时的minecraft问题。util。拉链ZipException:重复条目   java检测特定的震动运动(如图所示:D)