我正在尋找一種慣用的方法來優化我寫的這個模板。根據其他參數計算模板參數的習慣方式
我主要關心的是如何正確定義模板參數n
並將其用作返回參數,而用戶不得覆蓋它。
我也打開其他建議,關於如何以慣用的C++ 14方式編寫此模板。
template<
typename InType=uint32_t,
typename OutType=float,
unsigned long bits=8,
unsigned long n=(sizeof(InType) * 8)/bits
>
std::array<OutType,n> hash_to_color(InType in) noexcept {
InType mask = ~0;
mask = mask << bits;
mask = ~mask;
std::array<OutType,n> out;
auto out_max = static_cast<OutType>((1 << bits) - 1);
for (auto i = 0; i < n; i++) {
auto selected = (in >> (i * bits)) & mask;
out[i] = static_cast<OutType>(selected)/out_max;
}
return out;
}
,也許你可以'static_assert'它的正確值:
您可以使用此像往常一樣? –