Как в C++ определить сигнатуру функции, переданной в шаблон другой функции?
Делаю так:
#include
template
template
using Arguments = std::tuple
template
double square(double x) { return x * x; }
int main() {
using Sig = Signature
Вот что меня смутило в логе компиляции:
error C2079: 's' uses undefined struct 'Signature
Появилось (__cdecl *). Что оно вообще означает, и как тогда определить сигнатуру в test(Func f)?
Ответ
Надо добавить специализацию для указателя на функцию:
template
using Arguments = std::tuple
Это нужно потому, что после передачи функции в качестве параметра в test она неявно преобразуется в указатель и тип Func будет на самом деле указателем на функцию.
Комментариев нет:
Отправить комментарий