0
je tente de compiler les points suivants avec VS2017:VARIADIC enveloppe fonctionnelle ne compile pas avec MSVC2017
template <typename R, typename ...Args>
struct Logger3<R(Args...)>
{
std::function<R(Args...)> func;
string name;
Logger3(std::function<R(Args...)> func, const string& name)
: func{func}, name{name}
{
}
R operator() (Args ...args)
{
cout << "Entering " << name << endl;
R result = func(args...);
cout << "Exiting " << name << endl;
return result;
}
};
double add(double a, double b)
{
cout << a << " + " << b << " = " << (a+b) << endl;
return a+b;
}
template <typename R, typename... Args>
auto make_logger3(R (*func)(Args...), const string& name)
{
return Logger3<R(Args...)>(
std::function<R(Args...)>(func),
name
);
};
et je deviens error C2988: unrecognizable template declaration/definition
sur la première ligne. Qu'est-ce que je fais mal?
Vous devriez avoir template 'struct Logger3,' avant votre spécialisation. –
Jarod42