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 | #include <cstdlib> #include <tuple> template<typename X> struct Y {}; template<typename T, size_t Level, size_t TermLevel> struct A; template<typename ... Ts> struct A<std::tuple<Y<Ts>...>, 1, 1> {}; // (B) dummy for T=tuple<int, Ts...> just to show it works for simple expansions template<typename ... Ts, size_t Level, size_t TermLevel> struct A<std::tuple<int, Ts...>, Level, TermLevel> { A<std::tuple<int, Ts...>, Level+1, TermLevel> value; }; template<typename ... Ts, size_t Level> struct A<std::tuple<int, Ts...>, Level, Level> {}; // (C) ambiguous partial specialization template<typename T1, typename T2, size_t Level, size_t TermLevel> struct A<std::tuple<Y<T1>, Y<T2> >, Level, TermLevel> { A<std::tuple<Y<T1>, Y<T2>>, Level+1, TermLevel> value; }; template<typename T1, typename T2, size_t Level> struct A<std::tuple<Y<T1>, Y<T2>>, Level, Level> {}; int main(int argc, const char *argv[]) { A<std::tuple<int, Y<int>, Y<float>>, 0, 5> tint; A<std::tuple<Y<int>, Y<float>>, 0, 5> tn; return 0; } |
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDx0dXBsZT4KCnRlbXBsYXRlPHR5cGVuYW1lIFg+IHN0cnVjdCBZIHt9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IExldmVsLCBzaXplX3QgVGVybUxldmVsPiBzdHJ1Y3QgQTsKCnRlbXBsYXRlPHR5cGVuYW1lIC4uLiBUcz4Kc3RydWN0IEE8c3RkOjp0dXBsZTxZPFRzPi4uLj4sIDEsIDE+IHt9OwoKLy8gKEIpIGR1bW15IGZvciBUPXR1cGxlPGludCwgVHMuLi4+IGp1c3QgdG8gc2hvdyBpdCB3b3JrcyBmb3Igc2ltcGxlIGV4cGFuc2lvbnMKdGVtcGxhdGU8dHlwZW5hbWUgLi4uIFRzLCBzaXplX3QgTGV2ZWwsIHNpemVfdCBUZXJtTGV2ZWw+CnN0cnVjdCBBPHN0ZDo6dHVwbGU8aW50LCBUcy4uLj4sIExldmVsLCBUZXJtTGV2ZWw+CnsKICAgIEE8c3RkOjp0dXBsZTxpbnQsIFRzLi4uPiwgTGV2ZWwrMSwgVGVybUxldmVsPiB2YWx1ZTsKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIC4uLiBUcywgc2l6ZV90IExldmVsPgpzdHJ1Y3QgQTxzdGQ6OnR1cGxlPGludCwgVHMuLi4+LCBMZXZlbCwgTGV2ZWw+IHt9OwoKCi8vIChDKSBhbWJpZ3VvdXMgcGFydGlhbCBzcGVjaWFsaXphdGlvbgp0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHNpemVfdCBMZXZlbCwgc2l6ZV90IFRlcm1MZXZlbD4Kc3RydWN0IEE8c3RkOjp0dXBsZTxZPFQxPiwgWTxUMj4gPiwgTGV2ZWwsIFRlcm1MZXZlbD4KewogICAgQTxzdGQ6OnR1cGxlPFk8VDE+LCBZPFQyPj4sIExldmVsKzEsIFRlcm1MZXZlbD4gdmFsdWU7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHNpemVfdCBMZXZlbD4Kc3RydWN0IEE8c3RkOjp0dXBsZTxZPFQxPiwgWTxUMj4+LCBMZXZlbCwgTGV2ZWw+IHt9OwoKaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKewogICAgQTxzdGQ6OnR1cGxlPGludCwgWTxpbnQ+LCBZPGZsb2F0Pj4sIDAsIDU+IHRpbnQ7CiAgICBBPHN0ZDo6dHVwbGU8WTxpbnQ+LCBZPGZsb2F0Pj4sIDAsIDU+IHRuOwogICAgcmV0dXJuIDA7Cn0K
-
upload with new input
-
result: Success time: 0s memory: 2824 kB returned value: 0


