是否有機會編寫元編程功能,但不能擴展編譯中的所有參數?只是想要一些參數作爲運行時參數和一些編譯。因爲我知道其中一些將在1..10的範圍內,但另一個未知(將在運行時知道)。編譯時在C++元編程中使用運行時參數(變量)
允許使用標準的元編程例子:
unsigned int factorial(unsigned int n) {
return n == 0 ? 1 : n * factorial(n - 1);
}
template <int n>
struct factorial {
enum { value = n * factorial<n - 1>::value };
};
template <>
struct factorial<0> {
enum { value = 1 };
};
// Usage examples:
// factorial<0>::value would yield 1;
// factorial<4>::value would yield 24.
而下面是我的情況:
unsigned int cutom_imagined_function(unsigned int n, unsigned int runtime_param /* this will be given at runtime */) {
return n == 0 ? 1 : (n + runtime_param) * cutom_imagined_function(n - 1);
}
我如何轉換上面元編程?並運行此假設如下(或類似的東西):
// int variable;
// variable = get_var_from_user();
// cutom_imagined_function<4>::value(variable)
你的例子沒有意義。當factorial是一個只有一個參數的概念時,我該如何描述如何實現'factorial <4>(variable)'? –
@MooingDuck這只是一個例子......編輯。更好? – nosbor
@awesomeyi不能?你爲什麼想讓編譯器確定運行時間的東西? – nosbor