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 | template< typename... args > struct A { template<typename... T> struct Inner; template< typename head, typename... tags > struct Inner<head, tags...> : public Inner<tags...> { }; template< typename head > struct Inner<head> { // assume both args... and tags... must be used to // calculate TYPE typedef int TYPE; }; }; template< typename... args > struct B : A<args...> { template<typename... tags> typename A<args...>::template Inner<tags...>::TYPE x() { return 0; } }; int main(int argc, const char *argv[]) { B<int, int, int> b; b.x<char, short, long, double>(); return 0; } |
dGVtcGxhdGU8IHR5cGVuYW1lLi4uIGFyZ3MgPgogICAgc3RydWN0IEEgewogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+IHN0cnVjdCBJbm5lcjsKCiAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIGhlYWQsIHR5cGVuYW1lLi4uIHRhZ3MgPgogICAgICAgIHN0cnVjdCBJbm5lcjxoZWFkLCB0YWdzLi4uPiA6IHB1YmxpYyBJbm5lcjx0YWdzLi4uPiB7CiAgICAgICAgfTsKICAgIAogICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBoZWFkID4KICAgICAgICBzdHJ1Y3QgSW5uZXI8aGVhZD4gewogICAgICAgICAgICAvLyBhc3N1bWUgYm90aCBhcmdzLi4uIGFuZCB0YWdzLi4uIG11c3QgYmUgdXNlZCB0bwogICAgICAgICAgICAvLyBjYWxjdWxhdGUgVFlQRQogICAgICAgICAgICB0eXBlZGVmIGludCBUWVBFOwogICAgICAgIH07CiAgICB9OwogICAgCiAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUuLi4gYXJncyA+CiAgICBzdHJ1Y3QgQiA6IEE8YXJncy4uLj4gewogICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIHRhZ3M+CiAgICAgICAgdHlwZW5hbWUgQTxhcmdzLi4uPjo6dGVtcGxhdGUgSW5uZXI8dGFncy4uLj46OlRZUEUgeCgpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkgewogICAgICAgIEI8aW50LCBpbnQsIGludD4gYjsKICAgICAgICBiLng8Y2hhciwgc2hvcnQsIGxvbmcsIGRvdWJsZT4oKTsKICAgIAogICAgICAgIHJldHVybiAwOwogICAgfQ==
-
upload with new input
-
result: Success time: 0s memory: 2824 kB returned value: 0


