Şablon girişlerini genelleştirmek için daha büyük bir proje üzerinde çalışıyorum ve Boost MPL'yi C++ 03 kullanarak bazı endeksleri temiz bir şekilde doğrusallaştırmak için mücadele ediyorum. Sorunu bir örnekle göstermek en kolay yoldur (zavallı sözde kodumu affet).Boost MPL'yi Linearize Endekslerine Kullanma
N uzun uzunluklu vektörlerim var. N3 olduğu Say ve onlar gibi görünmek ki: Ben genel için bu dönüştürmek istediğiniz
vectorOfIndices = {0,4,1};
: gibi, bunların her biri için
v0 = {1,2,3};
v1 = {4,5,6,7,8};
v2 = {9,10};
, ben bir indeks ayrı vektör sakladığınız yaparak endeksi:
0*sizeof(v1)*sizeof(v2) + 4*sizeof(v2) + 1;
ben yardım tanımlayan en arıyorum meta işlevi/sınıf iki şablon parametreleri almalı bu bir genelleme olduğu tip mpl her iki :: vektör (içeren mpl :: int_ girişleri). İlk vektör bir dizi indisleri (yukarıdaki vektörOfIndices, fakat N uzunluğunda) içerecektir ve ikinci vektör bir uzunluk listesi (yukarıdaki v0, v1, v2 ... vN uzunlukları) içerecektir. Sonuç türü, genel dizini içeren bir mpl :: int_ olmalıdır.