Why I have to use the default value (::type = 0
) in this std::enable_if
usage?
I see examples, where it works without it. for example https://foonathan.net/blog/2015/11/30/overload-resolution-4.html
template <typename T,
typename std::enable_if<std::is_integral<T>::value, T>::type = 0>
void do_stuff(T t) {
std::cout << "do_stuff integral\n";
}
template <typename T,
typename std::enable_if<std::is_class<T>::value, T>::type = 0>
void do_stuff(T t) {
std::cout << "do_stuff class\n";
}
int main()
{
do_stuff(32);
return 0;
}
I got error message:
temp.cpp:7:6: note: template argument deduction/substitution failed:
temp.cpp:40:13: note: couldn't deduce template parameter ‘<anonymous>’
It should be deduced to
template <template T, int>
void do_stuff(T t)
which is a valid code. What I'm doing wrong? (gcc version 7.4.0)
Aucun commentaire:
Enregistrer un commentaire