#include <iostream>
#include <initializer_list>
// The actual function
template <class... TClasses>
void allocateAll() {
std::initializer_list<int>{(TClasses::allocate(), void(), 0)...};
}
struct C1 { static void allocate() { std::cout << "allocated C1\n"; } };
struct C2 { static void allocate() { std::cout << "allocated C2\n"; } };
struct C3 { static void allocate() { std::cout << "allocated C3\n"; } };
int main()
{
allocateAll<C1, C2, C3>();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KCi8vIFRoZSBhY3R1YWwgZnVuY3Rpb24KdGVtcGxhdGUgPGNsYXNzLi4uIFRDbGFzc2VzPgp2b2lkIGFsbG9jYXRlQWxsKCkgewogICAgc3RkOjppbml0aWFsaXplcl9saXN0PGludD57KFRDbGFzc2VzOjphbGxvY2F0ZSgpLCB2b2lkKCksIDApLi4ufTsKfQoKc3RydWN0IEMxIHsgc3RhdGljIHZvaWQgYWxsb2NhdGUoKSB7IHN0ZDo6Y291dCA8PCAiYWxsb2NhdGVkIEMxXG4iOyB9IH07CnN0cnVjdCBDMiB7IHN0YXRpYyB2b2lkIGFsbG9jYXRlKCkgeyBzdGQ6OmNvdXQgPDwgImFsbG9jYXRlZCBDMlxuIjsgfSB9OwpzdHJ1Y3QgQzMgeyBzdGF0aWMgdm9pZCBhbGxvY2F0ZSgpIHsgc3RkOjpjb3V0IDw8ICJhbGxvY2F0ZWQgQzNcbiI7IH0gfTsKCmludCBtYWluKCkKewogICAgYWxsb2NhdGVBbGw8QzEsIEMyLCBDMz4oKTsKICAgIHJldHVybiAwOwp9Cg==