2016-04-28 90 views
0

是否可以编写简单的C++函数(或其他任何语言),然后将其转换为模板元函数(使用某种转换器工具)。将C++转换为模板元程序

例如以下:

int GetGreatest(int a, int b){ 
    if (a > b) 
    return a; 
    return b; 
} 

并将其转换为:

template<int a,int b> 
struct GetGreatest{ 
    static int value = a > b ? a : b; 
}; 

是否有C++函数模板元函数转换器存在,或者我应该勇敢元编程的世界吗? (是的,我知道我可以使用constexpr,但我想使用模板)

+1

我真的不明白你想要什么。一个自动将任意C++函数转换为编译时运行的程序? –

+0

@MattiVirkkunen Yup – DarthRubik

+0

“STL元程序” - 没有这样的事情。对于初学者来说,再没有STL了。不是最长的时间。我们有一个叫做“C++库”的东西。 –

回答

2

我们不能证明世界上没有工具可以做到这一点,但要编写这样的工具非常困难除了那些非常简单的代码之外,它们可以通过IDE中的“代码片段”轻松解决。

如果我们想要构建这样的工具,我们可以使用Clang(或旧的GCC-XML)来解析运行时C++函数,然后尝试将其“编译”为模板元程序。然而,TMP比科学更具艺术性,编写这个编译器将会有相当多的工作,因为TMP作者使用的所有技巧(一些非常讨厌和不明显)。

+0

老鼠........... – DarthRubik

+1

@DarthRubik:老鼠非常有弹性,多才多艺,甚至聪明的生物。然而,我怀疑甚至一群老鼠是否能够将运行时功能可靠地编译为编译时功能。现在,如果你有一百万只猴子,也许...... –

+0

我想我只需要学习模板元编程的痛苦(尽管雇佣一大批训练有素的编程猴子听起来很有用) – DarthRubik