Я работаю над более крупным проектом, чтобы обобщать шаблонные настройки и изо всех сил пытаюсь линеаризовать некоторые индексы, используя Boost MPL с C++ 03. Проще всего показать мою проблему с примером (простить мой плохой псевдокод).Использование Boost MPL для линеаризации индексов
У меня есть N векторов произвольной длины. Скажем, N 3, и говорят, что они выглядят как:
v0 = {1,2,3};
v1 = {4,5,6,7,8};
v2 = {9,10};
Для каждого из них, я индекс хранится в отдельном векторе, как:
vectorOfIndices = {0,4,1};
Я хочу, чтобы преобразовать те, общее индекс выполнив:
0*sizeof(v1)*sizeof(v2) + 4*sizeof(v2) + 1;
мета функция/класс Я ищу помощи Defining является обобщением этого, который должен принимать два параметра шаблона, оба типа MPL :: вектор (содержащий MPL :: int_ записи). Первый вектор будет содержать последовательность индексов (vectorOfIndices выше, но длины N), а второй вектор будет содержать список длин (длины v0, v1, v2 ... vN выше). Тип результата должен быть mpl :: int_, который содержит общий индекс.