私が書いたこのテンプレートを最適化するための慣用方法を探しています。他のパラメータに応じてテンプレートパラメータを計算する慣習的な方法
私の主な関心事は、テンプレートパラメータn
を正しく定義し、それをリターンパラメータとして使用してユーザが上書きしないようにすることです。
このテンプレートを慣用的なC++の方法で書く方法については、他の提案もあります。
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'ことができますか? –