В этом случае действительно нет никакого преимущества, потому что целочисленные типы будут сначала преобразованы, например, в int
, а затем будет вызван правильный перегруженный конструктор.
Однако представьте, что вы хотите создать функцию который принимает только целые числа. Он должен вернуть тип целого числа, полученного в качестве аргумента. В этом случае создание> 10 перегрузок вручную просто подвержено ошибкам / глупо / раздражает / ... Вместо этого вы должны написать что-то вроде:
template <typename Integer,
std::enable_if_t<std::is_integral<Integer>::value, int> = 0>
Integer doMagic (Integer a) {
return a;
}