Tôi đang cố gắng thực hiện một số công cụ chuyên môn hóa một phần. Tôi có một tuple
và tôi muốn lặp lại từ một chỉ mục phần tử nào đó đến chỉ mục tuple đầu tiên, tích lũy một giá trị từ mỗi loại trong tuple
. Điều này có vẻ là một vấn đề đơn giản khi sử dụng một bản mẫu đệ quy.Chuyên môn hóa một phần các mẫu có thông số nguyên
Vấn đề là, tôi dường như không thể làm cho đệ quy hoạt động. Để dừng đệ quy, tôi cần một phần chuyên chức năng mẫu tại chỉ số tuple 0. Điều đó dường như đủ đơn giản, nhưng nó không hoạt động.
Lưu ý: Tôi đã xóa nội dung tuple
thực tế khỏi ví dụ, vì nó không liên quan; đó là chuyên môn mẫu không hoạt động.
template<int Index, typename Tpl>
size_t CalcInterleaveByteOffset(const Tpl &t)
{
size_t prevOffset = CalcInterleaveByteOffset<Index - 1>(t);
return prevOffset + sizeof(Tpl);
}
template<typename Tpl>
size_t CalcInterleaveByteOffset<0, Tpl>(const Tpl &t)
{
return 0;
}
GCC simply says that this kind of specialization is not allowed. Điều đó có đúng không? Có cách nào khác để xử lý thứ này không?
tôi có thể phân biệt tầng lớp khác nhau với các thành viên biến khác nhau theo cách này? Tôi có thể đoán có? – GameDeveloper