我是一名数学家,以前很长一段时间都在做"旧式"C++编程.我觉得C++ 11提供的一些新的句法结构可以帮助我实现一些关于我的专业项目的更好的代码.然而,由于我不是CS专业,我必须承认我缺乏了解我在自学过程中遇到的一些例子的知识,尽管到目前为止我还很幸运/成功.
我的印象是,可变参数模板可用于实现类型安全的函数组合,如本问题所示.由于我想用异构(但兼容)的参数/返回类型编写函数,所以我的关注稍微有点笼统.我已经google了很多,并找到了另一个参考,但它似乎对我来说是"黑魔法";)我不会假装我可以在我的上下文中调整代码,虽然我觉得我应该在那里找到我需要的东西.
我认为下面的(最不完整的)代码对于我想要实现的内容是相对不言自明的.特别是我相信当一个人试图组合不兼容的函数(这里是箭头)时,正确的实现将抛出编译时错误,并且需要一段递归模板代码.
template <typename Source , typename Target> class Arrow
{
Target eval (const Source &);
};
template <typename ...Arrows> class Compositor
{
template <typename ...Arrows>
Compositor (Arrows... arrows)
{
// do/call what needs be here
};
auto arrow(); // gives a function performing the functionnal composition of arrows
};
// define some classes A, B and C
int main(int argc, char **argv)
{
Arrow < A , B > arrow1;
Arrow < B …Run Code Online (Sandbox Code Playgroud)