1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <iostream> #include <typeinfo> template<typename T> void create() { std::cout << "create called with " << typeid(T).name() << std::endl; } template<typename...> struct caller; template<typename T, typename...Rest> struct caller<T, Rest...> { static void call() { create<T>(); caller<Rest...>::call(); } }; template<> struct caller<> { static void call() { } }; template<typename...classes> void createObject(){ caller<classes...>::call(); } int main() { createObject<int,float, short>(); } |
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIGNyZWF0ZSgpCnsKICAgc3RkOjpjb3V0IDw8ICJjcmVhdGUgY2FsbGVkIHdpdGggIiA8PCB0eXBlaWQoVCkubmFtZSgpIDw8IHN0ZDo6ZW5kbDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUuLi4+CnN0cnVjdCBjYWxsZXI7CgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi5SZXN0PgpzdHJ1Y3QgY2FsbGVyPFQsIFJlc3QuLi4+CnsKICAgICBzdGF0aWMgdm9pZCBjYWxsKCkKICAgICB7CiAgICAgICAgY3JlYXRlPFQ+KCk7CiAgICAgICAgY2FsbGVyPFJlc3QuLi4+OjpjYWxsKCk7CiAgICAgfQp9Owp0ZW1wbGF0ZTw+CnN0cnVjdCBjYWxsZXI8Pgp7CiAgICAgc3RhdGljIHZvaWQgY2FsbCgpCiAgICAgewogICAgIH0KfTsKCnRlbXBsYXRlPHR5cGVuYW1lLi4uY2xhc3Nlcz4Kdm9pZCBjcmVhdGVPYmplY3QoKXsKICAgICAgY2FsbGVyPGNsYXNzZXMuLi4+OjpjYWxsKCk7Cn0KCmludCBtYWluKCkKewogICAgICBjcmVhdGVPYmplY3Q8aW50LGZsb2F0LCBzaG9ydD4oKTsKfQ==
-
upload with new input
-
result: Success time: 0s memory: 2928 kB returned value: 0
create called with i create called with f create called with s


