@@ -67,11 +67,11 @@ template<typename Fn> class function_ref;
6767
6868template <typename Ret, typename ...Params>
6969class function_ref <Ret(Params...)> {
70- Ret (*callback)(void * callable, Params ...params);
71- void * callable;
70+ Ret (*callback)(intptr_t callable, Params ...params);
71+ intptr_t callable;
7272
7373 template <typename Callable>
74- static Ret callback_fn (void * callable, Params ...params) {
74+ static Ret callback_fn (intptr_t callable, Params ...params) {
7575 return (*reinterpret_cast <Callable*>(callable))(
7676 std::forward<Params>(params)...);
7777 }
@@ -80,7 +80,7 @@ class function_ref<Ret(Params...)> {
8080 template <typename Callable>
8181 function_ref (Callable &&callable)
8282 : callback(callback_fn<typename std::remove_reference<Callable>::type>),
83- callable (reinterpret_cast <void * >(&callable)) {}
83+ callable (reinterpret_cast <intptr_t >(&callable)) {}
8484 Ret operator ()(Params ...params) const {
8585 return callback (callable, std::forward<Params>(params)...);
8686 }
@@ -90,29 +90,29 @@ class function_ref<Ret(Params...)> {
9090
9191template <typename Ret>
9292class function_ref <Ret()> {
93- Ret (*callback)(void * callable);
94- void * callable;
93+ Ret (*callback)(intptr_t callable);
94+ intptr_t callable;
9595
9696 template <typename Callable>
97- static Ret callback_fn (void * callable) {
97+ static Ret callback_fn (intptr_t callable) {
9898 return (*reinterpret_cast <Callable*>(callable))();
9999 }
100100
101101public:
102102 template <typename Callable>
103103 function_ref (Callable &&callable)
104104 : callback(callback_fn<typename std::remove_reference<Callable>::type>),
105- callable (reinterpret_cast <void * >(&callable)) {}
105+ callable (reinterpret_cast <intptr_t >(&callable)) {}
106106 Ret operator ()() const { return callback (callable); }
107107};
108108
109109template <typename Ret, typename Param1>
110110class function_ref <Ret(Param1)> {
111- Ret (*callback)(void * callable, Param1 param1);
112- void * callable;
111+ Ret (*callback)(intptr_t callable, Param1 param1);
112+ intptr_t callable;
113113
114114 template <typename Callable>
115- static Ret callback_fn (void * callable, Param1 param1) {
115+ static Ret callback_fn (intptr_t callable, Param1 param1) {
116116 return (*reinterpret_cast <Callable*>(callable))(
117117 std::forward<Param1>(param1));
118118 }
@@ -121,19 +121,19 @@ class function_ref<Ret(Param1)> {
121121 template <typename Callable>
122122 function_ref (Callable &&callable)
123123 : callback(callback_fn<typename std::remove_reference<Callable>::type>),
124- callable (reinterpret_cast <void * >(&callable)) {}
124+ callable (reinterpret_cast <intptr_t >(&callable)) {}
125125 Ret operator ()(Param1 param1) {
126126 return callback (callable, std::forward<Param1>(param1));
127127 }
128128};
129129
130130template <typename Ret, typename Param1, typename Param2>
131131class function_ref <Ret(Param1, Param2)> {
132- Ret (*callback)(void * callable, Param1 param1, Param2 param2);
133- void * callable;
132+ Ret (*callback)(intptr_t callable, Param1 param1, Param2 param2);
133+ intptr_t callable;
134134
135135 template <typename Callable>
136- static Ret callback_fn (void * callable, Param1 param1, Param2 param2) {
136+ static Ret callback_fn (intptr_t callable, Param1 param1, Param2 param2) {
137137 return (*reinterpret_cast <Callable*>(callable))(
138138 std::forward<Param1>(param1),
139139 std::forward<Param2>(param2));
@@ -143,7 +143,7 @@ class function_ref<Ret(Param1, Param2)> {
143143 template <typename Callable>
144144 function_ref (Callable &&callable)
145145 : callback(callback_fn<typename std::remove_reference<Callable>::type>),
146- callable (reinterpret_cast <void * >(&callable)) {}
146+ callable (reinterpret_cast <intptr_t >(&callable)) {}
147147 Ret operator ()(Param1 param1, Param2 param2) {
148148 return callback (callable,
149149 std::forward<Param1>(param1),
@@ -153,11 +153,11 @@ class function_ref<Ret(Param1, Param2)> {
153153
154154template <typename Ret, typename Param1, typename Param2, typename Param3>
155155class function_ref <Ret(Param1, Param2, Param3)> {
156- Ret (*callback)(void * callable, Param1 param1, Param2 param2, Param3 param3);
157- void * callable;
156+ Ret (*callback)(intptr_t callable, Param1 param1, Param2 param2, Param3 param3);
157+ intptr_t callable;
158158
159159 template <typename Callable>
160- static Ret callback_fn (void * callable, Param1 param1, Param2 param2,
160+ static Ret callback_fn (intptr_t callable, Param1 param1, Param2 param2,
161161 Param3 param3) {
162162 return (*reinterpret_cast <Callable*>(callable))(
163163 std::forward<Param1>(param1),
@@ -169,7 +169,7 @@ class function_ref<Ret(Param1, Param2, Param3)> {
169169 template <typename Callable>
170170 function_ref (Callable &&callable)
171171 : callback(callback_fn<typename std::remove_reference<Callable>::type>),
172- callable (reinterpret_cast <void * >(&callable)) {}
172+ callable (reinterpret_cast <intptr_t >(&callable)) {}
173173 Ret operator ()(Param1 param1, Param2 param2, Param3 param3) {
174174 return callback (callable,
175175 std::forward<Param1>(param1),
0 commit comments