- #include <vector> 
- #include <functional> 
-   
- template<class T, class... Args> class FuncList { 
- public: 
-   std::vector<std::function<T(Args...)>> mFuncs; 
-   
-   void operator()(Args... args) { 
-     for (auto fn : mFuncs) 
-       fn(args...); 
-   } 
- }; 
-   
- void mul(int x, int y) { 
-   printf("%i\n", x * y); 
- } 
-   
- auto add = [] (int x, int y) {printf("%i\n", x + y);}; 
-   
- int main() { 
- 	FuncList<void, int, int> testFncs; 
- 	testFncs.mFuncs.push_back(add); 
- 	testFncs.mFuncs.push_back(mul); 
- 	testFncs(5, 6); 
- } 
				I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Cgp0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPiBjbGFzcyBGdW5jTGlzdCB7CnB1YmxpYzoKICBzdGQ6OnZlY3RvcjxzdGQ6OmZ1bmN0aW9uPFQoQXJncy4uLik+PiBtRnVuY3M7CgogIHZvaWQgb3BlcmF0b3IoKShBcmdzLi4uIGFyZ3MpIHsKICAgIGZvciAoYXV0byBmbiA6IG1GdW5jcykKICAgICAgZm4oYXJncy4uLik7CiAgfQp9OwoKdm9pZCBtdWwoaW50IHgsIGludCB5KSB7CiAgcHJpbnRmKCIlaVxuIiwgeCAqIHkpOwp9CgphdXRvIGFkZCA9IFtdIChpbnQgeCwgaW50IHkpIHtwcmludGYoIiVpXG4iLCB4ICsgeSk7fTsKCmludCBtYWluKCkgewoJRnVuY0xpc3Q8dm9pZCwgaW50LCBpbnQ+IHRlc3RGbmNzOwoJdGVzdEZuY3MubUZ1bmNzLnB1c2hfYmFjayhhZGQpOwoJdGVzdEZuY3MubUZ1bmNzLnB1c2hfYmFjayhtdWwpOwoJdGVzdEZuY3MoNSwgNik7Cn0=