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 | template< int Index, class T, T... Args > struct LookupAtIndex; template< int Index, class T, T First, T... Rest > struct LookupAtIndex< Index, T, First, Rest... > { static constexpr T result() { return LookupAtIndex< Index - 1, T, Rest... > ::result(); } }; template< class T, T First, T... Rest > struct LookupAtIndex< 0, T, First, Rest... > { static constexpr T result() { return First; } }; #include <iostream> using namespace std; int f( int ) { return 0; } int g( int ) { return 0; } int h( int ) { return 0; } int main() { cout<< (LookupAtIndex< 0, int(*)(int), &f, &g, &h >::result() == &f) <<endl; cout<< (LookupAtIndex< 1, int(*)(int), &f, &g, &h >::result() == &g) <<endl; cout<< (LookupAtIndex< 2, int(*)(int), &f, &g, &h >::result() == &h) <<endl; } |
dGVtcGxhdGU8IGludCBJbmRleCwgY2xhc3MgVCwgVC4uLiBBcmdzID4gc3RydWN0IExvb2t1cEF0SW5kZXg7Cgp0ZW1wbGF0ZTwgaW50IEluZGV4LCBjbGFzcyBULCBUIEZpcnN0LCBULi4uIFJlc3QgPgpzdHJ1Y3QgTG9va3VwQXRJbmRleDwgSW5kZXgsIFQsIEZpcnN0LCBSZXN0Li4uID4gewogIHN0YXRpYyBjb25zdGV4cHIgVCByZXN1bHQoKSB7CiAgICByZXR1cm4gTG9va3VwQXRJbmRleDwgSW5kZXggLSAxLCBULCBSZXN0Li4uID4gOjpyZXN1bHQoKTsKICB9Cn07Cgp0ZW1wbGF0ZTwgY2xhc3MgVCwgVCBGaXJzdCwgVC4uLiBSZXN0ID4Kc3RydWN0IExvb2t1cEF0SW5kZXg8IDAsIFQsIEZpcnN0LCBSZXN0Li4uID4gewogIHN0YXRpYyBjb25zdGV4cHIgVCByZXN1bHQoKSB7IHJldHVybiBGaXJzdDsgfQp9OwoKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGYoIGludCApIHsgcmV0dXJuIDA7IH0KaW50IGcoIGludCApIHsgcmV0dXJuIDA7IH0KaW50IGgoIGludCApIHsgcmV0dXJuIDA7IH0KCmludCBtYWluKCkKewogIGNvdXQ8PCAoTG9va3VwQXRJbmRleDwgMCwgaW50KCopKGludCksICZmLCAmZywgJmggPjo6cmVzdWx0KCkgPT0gJmYpIDw8ZW5kbDsKICBjb3V0PDwgKExvb2t1cEF0SW5kZXg8IDEsIGludCgqKShpbnQpLCAmZiwgJmcsICZoID46OnJlc3VsdCgpID09ICZnKSA8PGVuZGw7CiAgY291dDw8IChMb29rdXBBdEluZGV4PCAyLCBpbnQoKikoaW50KSwgJmYsICZnLCAmaCA+OjpyZXN1bHQoKSA9PSAmaCkgPDxlbmRsOwp9Cg==
-
upload with new input
-
result: Success time: 0s memory: 2828 kB returned value: 0
1 1 1


