Явное создание экземпляра шаблона класса со списком параметров

#c

#c

Вопрос:

Я пытаюсь создать экземпляр шаблона класса с целым набором различных комбинаций параметров шаблона, которые будут определяться некоторой информацией о времени выполнения: https://github.com/ITKTools/ITKTools/blob/newpixeltypeselector/src/binarythinning/binarythinning.cxx . Эта система работает нормально (строки 169-190), но она довольно подробная. И это только 2 и 3 измерения, что, если бы я хотел 2-10? Это были бы страницы кода!

Есть ли какой-либо способ сократить это, чтобы сказать «создать экземпляры всех пар [этих типов] и [этих измерений]» или что-то в этом роде?

Я видел нечто подобное в Boost, но, к сожалению, использование Boost не подходит для этого проекта.

Какие-либо указатели?

Спасибо!

Дэвид

Комментарии:

1. Если вы видели это в Boost, тогда прочитайте исходный код Boost. Это должно достаточно хорошо объяснить, как это сделать.

2. Ха-ха «прочитайте исходный код Boost» — это на самом деле не тот ответ, который поможет кому-либо, кроме элитных программистов.

3. хах, я собирался привести вам пример того, как это делается с помощью Boost, когда заметил это. Ну что ж. Почему вы хотите изобретать велосипед?

4. Поиск в Google «typelist» должен дать некоторые разумные отправные точки. Loki также включает в себя такого рода возможности, и он намного меньше (хотя и более мозговой), чем Boost.

5. Я думаю, вы можете сделать это (или, по крайней мере, часть измерений) с помощью Boost.PP. И использование Boost. PP — это опция практически для любого проекта, поскольку вам нужно будет только включить Boost. Заголовки PP, и это все. И поскольку для этого требуется только препроцессор, совместимость с компилятором не является проблемой (хотя совместимость с препроцессором может быть проблемой :)).

Ответ №1:

Я предполагаю, что консенсус заключается в «использовании Boost».