Skip to content

Instantly share code, notes, and snippets.

@beto-bit
Last active October 16, 2023 13:53
Show Gist options
  • Save beto-bit/f7ad413be21f2f4a94379dae289f5ba0 to your computer and use it in GitHub Desktop.
Save beto-bit/f7ad413be21f2f4a94379dae289f5ba0 to your computer and use it in GitHub Desktop.
Function Pointer wrapper with zero overhead
template<typename Signature>
struct FuncPtr;
template<typename ReturnType, typename... Args>
struct FuncPtr<ReturnType(Args...)> {
ReturnType (*func_ptr)(Args...);
FuncPtr(ReturnType (*func)(Args...)) : func_ptr(func) {}
ReturnType operator()(Args... args) {
return func_ptr(args...);
}
};
template<typename ReturnType, typename... Args>
FuncPtr(ReturnType (*func_ptr)(Args...)) -> FuncPtr<ReturnType(Args...)>;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment