Chcę napisać strukturę szablonu foo
tak, aby foo<N>::value_type
była najbliższą całkowitą liczbą całkowitą (zaokrąglanie w górę) do N
. Na przykład foo<32>::value_type => uint32_t
, foo<33>::value_type => uint64_t
i foo<72>::value_type => uint64_t
.Specjalizacja szablonowa dla zakresu wartości
Aby to zrobić, potrzebuję eleganckiego sposobu dostarczania częściowych specjalizacji foo
dla zakresu wartości, np. 1 <= N <= 8
, aby powrócić do uint8_t i tak dalej, a więc na czwartym. Czy istnieje sposób na osiągnięcie tego celu bez konieczności specjalizacji wszystkiego od 0 do 64.
Nie będzie bezpośredniej metody (jak powiedział Mark), ale może jakiś sprytny szablon metaprogramming trick. Ładne pytanie, czekanie na odpowiedź. –