【发布时间】:2015-04-05 15:37:48
【问题描述】:
每次处理 for 循环时,我都想将一个值加倍。到目前为止,我有以下代码:
constexpr size_t doubleN(size_t n, size_t iteration)
{
return n * iteration;
};
const array<size_t, 9> iterationArray = { 1, 2, 3, 4, 5, 6, 7, 8, 10 };
for (size_t i = 1; i <= 10; i++)
{
Insertionsort<double, doubleN(INITIAL_SIZE_N_INSERTIONSORT, iterationArray[i])> insertionsort;
Util<doubleN(INITIAL_SIZE_N_INSERTIONSORT, iterationArray[i])> util;
array<double, doubleN(INITIAL_SIZE_N_INSERTIONSORT, iterationArray[i])> arrayRef;
util.generateRandomDoubleArray(arrayRef);
util.overwriteProcessorCache();
cout << "Measure Insertionsort version 1 with n = " << INITIAL_SIZE_N_INSERTIONSORT << "." << endl;
util.startTimeMeasure();
insertionsort.sortVersion1(arrayRef);
util.stopTimeMeasure();
cout << "Measureing Insertionsort version 1 successful." << endl;
}
我的问题是,我不能将constexpr 返回的值加倍,因为它总是需要一个常量值作为参数。你知道如何得到一个constexpr,它总是返回一个基于先前加倍值加倍的值吗?
【问题讨论】:
-
i是运行时变量,所以不能在常量表达式中使用。
标签: c++ templates constants constexpr