Dada uma definição de tipo de uma função, existe uma maneira de converter os parâmetros recebidos por meio de um modelo variádico como um argumento para os tipos exatos da typedef
função ed?
#include <concepts>
#include <iostream>
typedef int foo(int, int);
template <typename func, typename... Args>
requires std::invocable<func, Args &&...>
void bar(Args&&... args) {
((std::cout << std::forward<Args>(args)), ...);
}
int main() { bar<foo>(4, 4.1); }
Neste exemplo, verifico se func
would seria invocável com os argumentos fornecidos e, em seguida, imprimo os argumentos passados. 4 e 4.1 são impressos (como esperado). Mas foo
aceita int,int
, então o objetivo seria imprimir 4 e 4 como resultado da conversão args
para os tipos de parâmetros aceitos por foo
. Uma solução simples, porém funcional, seria muito apreciada.