Доброго времени суток!
В с++11 появилась возможность делать шаблоны с переменным числом аргументов. При этом есть мануалы, как пройтись по списку всех переменных, переданных в функцию, даже если они разного типа, как посчитать количество переданных в шаблон типов. Но как пройтись по списку типов, не создавая переменных соответствующего типа?
Такая задача встала из необходимости создать контейнер для экземпляров разных классов, количество этих классов заранее неизвестно. При этом каждый класс имеет свои параметры инициализации, которые считываются из файла конфига. Какие будут параметры инициализации - тоже заранее неизвестно. Получается так, что надо бы определить в этих классах функцию чтения части конфига, которую далее вызывать еще до момента создания этих классов. Ясно, что она будет статиком. Но как ее вызывать для набора таких классов - хз.
Кароч, нужен какой-то вот такой код (суть, я думаю, ясна, хоть он и, очевидно, не работающий):
#include <libconfig.h++>
void f1()
{
Config cfg;
cfg.readFile("ololo.cfg");
const Setting& settings = cfg.getRoot();
template<class ...T>for(auto t: ...T)
{
t::LoadConfig(settings);
}
}