template<typename DetourClass, typename BaseClass, typename VirtualClass, typename Result, typename ... Arguments>
member_detour_<DetourClass, BaseClass, VirtualClass, Result(Arguments...)> struct

Template parameters
DetourClass The name of the class that is extending this object and is being used to hold the detour.
BaseClass The name of the class this object is simulating, must contain the method (or any of its superclasses must)
VirtualClass The name of the base class where the method was defined. For non-virtual methods, this must be the same as BaseClass.
Result The return type of the function to detour, can be void.

Public types

using detour_pointer = Result(__thiscall*)(VirtualClass*, Arguments...)
The type of function pointer used to keep track of the original function.
using detour_object = member_detour_<DetourClass, BaseClass, VirtualClass, Result(Arguments...)>

Public static variables

static detour_pointer original_function
The pointer to the original function, you can call this with the same parameters as the function.

Public static functions

static auto detoured_function(VirtualClass* object, int edx, Arguments... args) -> Result __fastcall
static auto attach(UINT function_address) -> LONG
static auto detach() -> LONG

Public functions

auto detoured(Arguments...) -> Result