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 39 40 41 42 43 44 45 46 47 48 49 | #include <iostream> #include <vector> struct any { any(int e) { INT = e; } any(float e) { FLOAT = e; } any(char* e) { STRING = e; } int INT; float FLOAT; char *STRING; }; template<typename T> struct get { T operator()(const any& a) { return T(); }}; template<> struct get<int> { int operator()(const any& a) { return a.INT; }}; template<> struct get<float> { float operator()(const any& a) { return a.FLOAT; }}; template<> struct get<char*> { char* operator()(const any& a) { return a.STRING; }}; #define def(name) \ template <typename... A> \ std::vector<any> name##_imp(A... args) { \ std::vector<any> vec = {args...}; \ return vec; \ } \ template<typename... P> \ void name (P... rgs) { \ std::vector<any> args=name##_imp(any(rgs)...); #define get(T,I) get<T>()(args[I]) #define end } ///// TEST ///// def (test) int i = get(int ,0); float f = get(float,1); char *s = get(char*,2); std::cout << "I: " << i << std::endl; std::cout << "F: " << f << std::endl; std::cout << "S: " << s << std::endl; end int main() { char s[] = "Hello"; test(1, 3.4f, s); } |
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RydWN0IGFueSB7CiAgYW55KGludCAgIGUpIHsgSU5UICAgID0gZTsgfQogIGFueShmbG9hdCBlKSB7IEZMT0FUICA9IGU7IH0KICBhbnkoY2hhciogZSkgeyBTVFJJTkcgPSBlOyB9CgogIGludCAgIElOVDsKICBmbG9hdCBGTE9BVDsKICBjaGFyICpTVFJJTkc7Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgZ2V0ICAgICAgICB7IFQgICAgIG9wZXJhdG9yKCkoY29uc3QgYW55JiBhKSB7IHJldHVybiBUKCk7ICAgICAgfX07CnRlbXBsYXRlPD4gICAgICAgICAgIHN0cnVjdCBnZXQ8aW50PiAgIHsgaW50ICAgb3BlcmF0b3IoKShjb25zdCBhbnkmIGEpIHsgcmV0dXJuIGEuSU5UOyAgICB9fTsKdGVtcGxhdGU8PiAgICAgICAgICAgc3RydWN0IGdldDxmbG9hdD4geyBmbG9hdCBvcGVyYXRvcigpKGNvbnN0IGFueSYgYSkgeyByZXR1cm4gYS5GTE9BVDsgIH19Owp0ZW1wbGF0ZTw+ICAgICAgICAgICBzdHJ1Y3QgZ2V0PGNoYXIqPiB7IGNoYXIqIG9wZXJhdG9yKCkoY29uc3QgYW55JiBhKSB7IHJldHVybiBhLlNUUklORzsgfX07CgojZGVmaW5lIGRlZihuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQT4gICAgICAgICAgICAgICAgICAgICAgICBcCiAgc3RkOjp2ZWN0b3I8YW55PiBuYW1lIyNfaW1wKEEuLi4gYXJncykgeyAgICAgICAgXAogICAgc3RkOjp2ZWN0b3I8YW55PiB2ZWMgPSB7YXJncy4uLn07ICAgICAgICAgICAgIFwKICAgIHJldHVybiB2ZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFA+ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB2b2lkIG5hbWUgKFAuLi4gcmdzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICBzdGQ6OnZlY3Rvcjxhbnk+IGFyZ3M9bmFtZSMjX2ltcChhbnkocmdzKS4uLik7CiAgCgojZGVmaW5lIGdldChULEkpIGdldDxUPigpKGFyZ3NbSV0pCiNkZWZpbmUgZW5kIH0KCi8vLy8vIFRFU1QgLy8vLy8KZGVmICh0ZXN0KQogICBpbnQgICBpID0gZ2V0KGludCAgLDApOwogICBmbG9hdCBmID0gZ2V0KGZsb2F0LDEpOwogICBjaGFyICpzID0gZ2V0KGNoYXIqLDIpOwoKICAgc3RkOjpjb3V0IDw8ICJJOiAiIDw8IGkgPDwgc3RkOjplbmRsOwogICBzdGQ6OmNvdXQgPDwgIkY6ICIgPDwgZiA8PCBzdGQ6OmVuZGw7CiAgIHN0ZDo6Y291dCA8PCAiUzogIiA8PCBzIDw8IHN0ZDo6ZW5kbDsKZW5kCiAgCmludCBtYWluKCkKewogICAgY2hhciBzW10gPSAiSGVsbG8iOwogICAgdGVzdCgxLCAzLjRmLCBzKTsKfQo=
-
upload with new input
-
result: Success time: 0s memory: 2960 kB returned value: 0
I: 1 F: 3.4 S: Hello


