#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=
compilation info
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*&)'
stdout