Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Does this leak `lambdaObject`?
- // An interface for any type with an implemented operator().
- template<typename ReturnType, typename... Args>
- struct Function {
- virtual ReturnType operator() (Args... args) const = 0;
- };
- template<typename LambdaType, typename ReturnType, typename... Args>
- struct Lambda: public Function<ReturnType, Args...> {
- LambdaType lambdaObject;
- ReturnType (LambdaType::*rawFnPtr)(Args...)const;
- Lambda(const LambdaType &lambdaObject):
- lambdaObject(lambdaObject),
- rawFnPtr(&LambdaType::operator()) {}
- ReturnType operator() (Args... args) const {
- return (lambdaObject.*rawFnPtr)(args...);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement