Tôi muốn viết cấu trúc mẫu foo
sao cho foo<N>::value_type
là số nguyên có kích thước gần nhất (làm tròn) thành N
. Ví dụ: foo<32>::value_type => uint32_t
, foo<33>::value_type => uint64_t
và foo<72>::value_type => uint64_t
.Chuyên môn mẫu cho một dải giá trị
Để làm điều này, tôi cần một phương tiện thanh lịch để cung cấp các chuyên môn một phần của foo
cho một loạt các giá trị, ví dụ: 1 <= N <= 8
để trả lại uint8_t v.v ... Có phương tiện để hoàn thành điều này mà không cần phải chuyên mọi thứ từ 0 đến 64.
Sẽ không có cách nào trực tiếp (như Mark đã nói), nhưng có thể một số mẹo lập trình meta lập trình thông minh. Câu hỏi hay, chờ xem câu trả lời. –