// 関数ポインタの場合に該当する、関数ポインタの実行、及び開放関数を
// 保持するためのType Erasurerです。
- template<class Func, class R>
+ template<class Func, typename Result>
struct function_ptr_manager {
- static R invoke(any_pointer function_ptr) {
+ static Result invoke(any_pointer function_ptr) {
Func func = reinterpret_cast<Func>(function_ptr.func_ptr);
return func();
}
// 関数オブジェクトの場合に該当する関数オブジェクトの実行、及び開放関数を
// 保持するためのType Erasurerです。
- template <typename Func, class R>
+ template <typename Func, class Result>
struct function_obj_manager {
- static R invoke(any_pointer func_obj) {
+ static Result invoke(any_pointer func_obj) {
Func* func = reinterpret_cast<Func*>(func_obj.obj_ptr);
return (*func)();
}