#include <iostream>
using namespace std;

typedef int (*funct_ptr_good)(int, void *);
typedef int (*funct_ptr_bad)();

void foo(funct_ptr_bad fb) {
	funct_ptr_good fg = reinterpret_cast<funct_ptr_good>(fb);
	fg(12345, NULL);
}

int main() {
	funct_ptr_good fg = [] (int key, void * ptr) -> int {
		cout << key << " " << ptr << endl;
		return 0;
	};
	foo(reinterpret_cast<funct_ptr_bad>(fg));
	return 0;
}