Обратите внимание, что GLFWkeyfun
является функцией указатель типа. Вместо этого тип функции указывается в качестве аргумента шаблона std::function
в std::function<void(GLFWwindow*, int, int, int, int)>
.
. Мы должны указать тип функции std::function
. Вы можете применить std::remove_pointer
к GLFWkeyfun
, например
std::cout << std::is_same<std::function<std::remove_pointer_t<GLFWkeyfun>>,
// ^^^^^^^^^^^^^^^^^^^^^^ ^
std::function<void(GLFWwindow*, int, int, int, int)>>::value
<< std::endl;
Если ваш компилятор не поддерживает C ++ 14, тогда
std::cout << std::is_same<std::function<std::remove_pointer<GLFWkeyfun>::type>,
// ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^
std::function<void(GLFWwindow*, int, int, int, int)>>::value
<< std::endl;
Демо