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 | #include <iostream> template <unsigned SIZE> struct offset_size { typedef typename offset_size<SIZE - 1>::type type; }; template <> struct offset_size<0> { typedef unsigned char type; }; template <> struct offset_size<257> { typedef unsigned int type; }; template<unsigned SIZE> class circular_buffer { public: // Added this line so we can inspect the sizes from main() unsigned char buffer[SIZE]; typename offset_size<SIZE>::type head; // index typename offset_size<SIZE>::type tail; // index }; int main() { std::cout << sizeof(circular_buffer<256>().head) << std::endl; std::cout << sizeof(circular_buffer<257>().head) << std::endl; } |
I2luY2x1ZGUgPGlvc3RyZWFtPgoKICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBTSVpFPgogICAgc3RydWN0IG9mZnNldF9zaXplIHsKICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG9mZnNldF9zaXplPFNJWkUgLSAxPjo6dHlwZSB0eXBlOwogICAgfTsKCiAgICB0ZW1wbGF0ZSA8PgogICAgc3RydWN0IG9mZnNldF9zaXplPDA+IHsKICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsKICAgIH07CgogICAgdGVtcGxhdGUgPD4KICAgIHN0cnVjdCBvZmZzZXRfc2l6ZTwyNTc+IHsKICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGludCB0eXBlOwogICAgfTsKCiAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBTSVpFPgogICAgY2xhc3MgY2lyY3VsYXJfYnVmZmVyIHsKICAgIHB1YmxpYzogLy8gQWRkZWQgdGhpcyBsaW5lIHNvIHdlIGNhbiBpbnNwZWN0IHRoZSBzaXplcyBmcm9tIG1haW4oKQogICAgICAgdW5zaWduZWQgY2hhciBidWZmZXJbU0laRV07CiAgICAgICB0eXBlbmFtZSBvZmZzZXRfc2l6ZTxTSVpFPjo6dHlwZSBoZWFkOyAvLyBpbmRleAogICAgICAgdHlwZW5hbWUgb2Zmc2V0X3NpemU8U0laRT46OnR5cGUgdGFpbDsgLy8gaW5kZXgKICAgIH07CiAgICAKaW50IG1haW4oKSB7CiAgICBzdGQ6OmNvdXQgPDwgc2l6ZW9mKGNpcmN1bGFyX2J1ZmZlcjwyNTY+KCkuaGVhZCkgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8IHNpemVvZihjaXJjdWxhcl9idWZmZXI8MjU3PigpLmhlYWQpIDw8IHN0ZDo6ZW5kbDsKfQ==
-
upload with new input
-
result: Success time: 0.01s memory: 2680 kB returned value: 0
1 4


