jeudi 3 septembre 2020

Difference between two template code patterns where in one case a number is assigned whereas in the other the keyword typename is used

In the following code, what is the difference between the following two template lines.

>      1. template<class T, std::enable_if_t<std::is_integral<T>::value, int> = 0> 
>      2. template<class T, typename = std::enable_if_t<std::is_integral<T>::value>>

Both the above lines are working fine, I just wanted to know the advantages/disadvantage in using one over the other.

#include <type_traits>
#include <iostream>
template<class T, std::enable_if_t<std::is_integral<T>::value, int> = 0>

//template<class T, typename = std::enable_if_t<std::is_integral<T>::value>>


int onlyOnInt(T a, T b)
{
    return a+b;
}
int main()
{
    onlyOnInt(1, 2);
}

Aucun commentaire:

Enregistrer un commentaire