Sono di fronte a un problema in cui sto cercando di creare una funzione membro variadic con un pacchetto di parametri di un tipo specifico.Funzione membro variabile della classe template
template <typename T>
struct A
{
using result_type = T;
T operator()(T a, T b)
{
return a+b;
}
};
template <typename Functor>
struct B
{
using T = typename Functor::result_type;
T operator()(Functor &&f, T... args)
{
return f(args...);
}
};
Si prevede di lavorare come:
A<int> a;
B<A<int>> b;
int result = b(a, 2, 3); // should return 5
Tuttavia ottengo i seguenti errori:
error: type 'T' (aka 'typename Functor::result_type') of function parameter pack does not contain any unexpanded parameter packs
T operator()(Functor &&f, T... args)
~^~~~~~~~
error: pack expansion does not contain any unexpanded parameter packs
return f(args...);
~~~~^
Quale sarebbe il modo corretto per ottenere la funzionalità previsto?
Non esiste un modo standard per applicare restrizioni sul tipo di argomenti o per utilizzare un tipo specifico nel pacchetto parametri? Se la risposta è no, l'unica cosa che posso fare è un static_assert con std :: is_same. –
plasmacel
@plasmacel, vedere l'aggiornamento –
Una risposta perfetta. – plasmacel