当前位置:  开发笔记 > 编程语言 > 正文

有没有办法在C++中为模板化函数赋予动态值?

如何解决《有没有办法在C++中为模板化函数赋予动态值?》经验,为你挑选了1个好方法。

模板元编程的"hello,world"可以被认为是阶乘代码:

template 
struct factorial {
    enum { value = n * factorial::value };
};

template <>
struct factorial<0> {
    enum { value = 1 };
};

所以我们可以通过这样做得到阶乘

cout << factorial<4>::value << endl; //It will print 24

但如果我这样做:

int N = 4;
cout << factorial::value << endl; //COMPILE ERROR

有没有办法在C++中为模板化函数提供动态值?



1> dasblinkenli..:

不,你做不到.模板元编程的重点是在编译时进行一些计算.您的factorial示例的整个递归扩展链由编译器完成,因此它必须知道值n才能完成计算.

如果您不知道n运行时的值,则应用"常规"编程样式,因此调用factorial::value变得不必要.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有