С учетом следующего кода:
struct Window{
void show();
//stuff
}w1, w2, w3;
struct Widget{
void show();
//stuff
}w4, w5, w6;
struct Toolbar{
void show();
//stuff
}t1, t2, t3;
Я хочу show
добавить несколько элементов:
for (auto &obj : {w3, w4, w5, t1})
obj.show();
Однако это не скомпилируется, так как std::initializer_list<T>
в for
-loop не может вывести T
, и на самом деле нет подходящего T
. Я не хочу создавать тип стирания типа из-за количества требуемого кода и ненужных служебных данных во время выполнения. Как правильно написать мой цикл так, чтобы тип obj
выводился для каждого элемента в концептуальном списке отдельно?