История изменений
Исправление Kuzy, (текущая версия) :
Не знаю, как ему это удалось, но он запутался в юзингах.
Так работает:
#include <iostream>
template<typename ret> using fptr_t = ret(*)(...);
template<typename ret, typename ... args> using fp_t = ret(*)(args...);
template<typename ret, typename ... args>
auto cast(ret(*f)(args...)) {
return (ret(*)(...))f;
}
template<typename ... args>
auto icast(int(*f)(args...)) {
return cast<int, args...>(f);
}
int a(int a) {std::cout << __PRETTY_FUNCTION__ << std::endl; return 0;}
int a(int a, int b) {std::cout << __PRETTY_FUNCTION__ << std::endl; return 0;}
int main(void) {
auto f = icast<int>(a);f();
auto f1 = icast<int, int>(a);f1();
}
Исходная версия Kuzy, :
Не знаю, как ему это удалось, но он запутался в юзингах.
#include <iostream>
template<typename ret> using fptr_t = ret(*)(...);
template<typename ret, typename ... args> using fp_t = ret(*)(args...);
template<typename ret, typename ... args>
auto cast(ret(*f)(args...)) {
return (ret(*)(...))f;
}
template<typename ... args>
auto icast(int(*f)(args...)) {
return cast<int, args...>(f);
}
int a(int a) {std::cout << __PRETTY_FUNCTION__ << std::endl; return 0;}
int a(int a, int b) {std::cout << __PRETTY_FUNCTION__ << std::endl; return 0;}
int main(void) {
auto f = icast<int>(a);f();
auto f1 = icast<int, int>(a);f1();
}