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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <iostream> template <int I> struct Traits { struct inner{}; }; template <> struct Traits<1> { struct inner{ template<class T1> struct impl{ impl() { std::cout << "impl<T1>" << std::endl; } }; }; }; template <> struct Traits<2> { struct inner{ template<class T1, class T2> struct impl{ impl() { std::cout << "impl<T1, T2>" << std::endl; } }; }; }; template<class T> struct Test{}; template<class T, class K> struct Foo{}; template<int I> struct arg{}; template< template<class, class> class T, class P1, int I > struct Test< T<P1, arg<I> > >{ typedef typename Traits<I>::inner inner; }; template< template<class, class> class T, class P2, int I > struct Test< T<arg<I>, P2 > >{ typedef typename Traits<I>::inner inner; }; // and a bunch of other partial specializations int main(){ typename Test<Foo<int, arg<1> > >::inner::impl<int> b; typename Test<Foo<int, arg<2> > >::inner::impl<int, double> c; } |
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPGludCBJPgpzdHJ1Y3QgVHJhaXRzCnsKICBzdHJ1Y3QgaW5uZXJ7fTsKfTsKCnRlbXBsYXRlIDw+CnN0cnVjdCBUcmFpdHM8MT4KewogIHN0cnVjdCBpbm5lcnsKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RydWN0IGltcGx7CiAgICAgIGltcGwoKSB7IHN0ZDo6Y291dCA8PCAiaW1wbDxUMT4iIDw8IHN0ZDo6ZW5kbDsgfQogICAgfTsKICB9Owp9OwoKdGVtcGxhdGUgPD4Kc3RydWN0IFRyYWl0czwyPgp7CiAgc3RydWN0IGlubmVyewogICAgdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgogICAgc3RydWN0IGltcGx7CiAgICAgIGltcGwoKSB7IHN0ZDo6Y291dCA8PCAiaW1wbDxUMSwgVDI+IiA8PCBzdGQ6OmVuZGw7IH0KICAgIH07CiAgfTsKfTsKCnRlbXBsYXRlPGNsYXNzIFQ+CnN0cnVjdCBUZXN0e307Cgp0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBLPgpzdHJ1Y3QgRm9ve307Cgp0ZW1wbGF0ZTxpbnQgST4Kc3RydWN0IGFyZ3t9OwoKdGVtcGxhdGU8CiAgdGVtcGxhdGU8Y2xhc3MsIGNsYXNzPiBjbGFzcyBULAogIGNsYXNzIFAxLCBpbnQgSQo+CnN0cnVjdCBUZXN0PCBUPFAxLCBhcmc8ST4gPiA+ewogIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzPEk+Ojppbm5lciBpbm5lcjsJCn07Cgp0ZW1wbGF0ZTwKICB0ZW1wbGF0ZTxjbGFzcywgY2xhc3M+IGNsYXNzIFQsCiAgY2xhc3MgUDIsIGludCBJCj4Kc3RydWN0IFRlc3Q8IFQ8YXJnPEk+LCBQMiA+ID57CiAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM8ST46OmlubmVyIGlubmVyOwkKfTsKCi8vIGFuZCBhIGJ1bmNoIG9mIG90aGVyIHBhcnRpYWwgc3BlY2lhbGl6YXRpb25zCgppbnQgbWFpbigpewoKICB0eXBlbmFtZSBUZXN0PEZvbzxpbnQsIGFyZzwxPiA+ID46OmlubmVyOjppbXBsPGludD4gYjsKICB0eXBlbmFtZSBUZXN0PEZvbzxpbnQsIGFyZzwyPiA+ID46OmlubmVyOjppbXBsPGludCwgZG91YmxlPiBjOwp9
-
upload with new input
-
result: Success time: 0s memory: 2828 kB returned value: 0
impl<T1> impl<T1, T2>


