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 <tuple> template<unsigned I> struct static_index{ static unsigned const value = I; }; template <typename... Fields> class Record { private: typedef std::tuple<Fields...> tuple_t; tuple_t list; public: Record() {} template<unsigned I> auto operator[](static_index<I>) -> typename std::tuple_element< I, tuple_t>::type& { return std::get<I>(list); } }; namespace idx{ const static_index<0> _0 = {}; const static_index<1> _1 = {}; const static_index<2> _2 = {}; const static_index<3> _3 = {}; const static_index<4> _4 = {}; } int main() { Record<int, double> r; r[idx::_0]; return 0; } |
I2luY2x1ZGUgPHR1cGxlPgoKdGVtcGxhdGU8dW5zaWduZWQgST4Kc3RydWN0IHN0YXRpY19pbmRleHsKICBzdGF0aWMgdW5zaWduZWQgY29uc3QgdmFsdWUgPSBJOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEZpZWxkcz4KY2xhc3MgUmVjb3JkIHsKICBwcml2YXRlOgogICAgdHlwZWRlZiBzdGQ6OnR1cGxlPEZpZWxkcy4uLj4gdHVwbGVfdDsKICAgIHR1cGxlX3QgbGlzdDsKCiAgcHVibGljOgogICAgUmVjb3JkKCkge30KCiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBJPgogICAgYXV0byBvcGVyYXRvcltdKHN0YXRpY19pbmRleDxJPikKICAgICAgICAtPiB0eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8CiAgICAgICAgICAgICAgIEksIHR1cGxlX3Q+Ojp0eXBlJgogICAgewogICAgICAgIHJldHVybiBzdGQ6OmdldDxJPihsaXN0KTsKICAgIH0KfTsKCm5hbWVzcGFjZSBpZHh7CmNvbnN0IHN0YXRpY19pbmRleDwwPiBfMCA9IHt9Owpjb25zdCBzdGF0aWNfaW5kZXg8MT4gXzEgPSB7fTsKY29uc3Qgc3RhdGljX2luZGV4PDI+IF8yID0ge307CmNvbnN0IHN0YXRpY19pbmRleDwzPiBfMyA9IHt9Owpjb25zdCBzdGF0aWNfaW5kZXg8ND4gXzQgPSB7fTsKfQoKaW50IG1haW4oKSB7CiAgICBSZWNvcmQ8aW50LCBkb3VibGU+IHI7CiAgICByW2lkeDo6XzBdOwogICAgcmV0dXJuIDA7Cn0=
-
upload with new input
-
result: Success time: 0s memory: 2824 kB returned value: 0


