我正在编译时创建一个打包字符数组,但是c ++告诉我该表达式必须具有常量值-无法评估不完整的“ gradient <256U>”的值。
我正在尝试通过代码在我的代码中嵌入颜色渐变。
template<unsigned S>
struct gradient {
constexpr gradient() : arr() {
for (auto i = 0; i < S; i++)
for (auto j = 0; j < S; j++)
arr[i + j * S] = ((i % 256) << 24) | ((j % 256) << 16) | (((i * j) % 256) << 8) | 255;
}
unsigned arr[S * S];
};
constexpr auto g0 = gradient<255>(); // ok
constexpr auto g1 = gradient<256>(); // error
constexpr auto g2 = gradient<1024>(); // error
突然之间,我无法创建具有比255高的值的渐变结构。但是为什么呢?