1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> template<typename T, size_t Length> size_t f(const T (&)[Length]) { return Length; } template<typename T, size_t Length, typename... Args> size_t f(const T (&)[Length], Args... rest) { return Length + f(rest...); } int main() { int a[] = { 1, 2, 3 }, b[] = { 1, 2, 3, 4, 5 }, c[] = { 1 }; std::cout << f(a, b, c); } |
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IExlbmd0aD4Kc2l6ZV90IGYoY29uc3QgVCAoJilbTGVuZ3RoXSkgewogICAgcmV0dXJuIExlbmd0aDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IExlbmd0aCwgdHlwZW5hbWUuLi4gQXJncz4Kc2l6ZV90IGYoY29uc3QgVCAoJilbTGVuZ3RoXSwgQXJncy4uLiByZXN0KSB7CiAgICByZXR1cm4gTGVuZ3RoICsgZihyZXN0Li4uKTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgYVtdID0geyAxLCAyLCAzIH0sIGJbXSA9IHsgMSwgMiwgMywgNCwgNSB9LCBjW10gPSB7IDEgfTsKCiAgICBzdGQ6OmNvdXQgPDwgZihhLCBiLCBjKTsKfQo=
prog.cpp: In function 'size_t f(const T (&)[Length], Args ...) [with T = int, unsigned int Length = 3u, Args = {int*, int*}, size_t = unsigned int]':
prog.cpp:16:27: instantiated from here
prog.cpp:10:30: error: no matching function for call to 'f(int*&, int*&)'
-
result: Compilation error (maybe you wish to see an example for C++11)


