Разница шаблонов функций перегрузки [дублирует]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Разница шаблонов функций перегрузки [дублирует]

Сообщение Anonymous »

Итак, я изучал Sfinae и как работает std ::: enable_if. На CPPREEFEREFERE есть следующий пример шаблонов функций перегрузки, и я не понимаю, почему он работает.

Код: Выделить всё

/* WRONG */

struct T
{
enum { int_t, float_t } type;

template
T(Integer) : type(int_t) {}

template
T(Floating) : type(float_t) {} // error: treated as redefinition
};

/* RIGHT */

struct T
{
enum { int_t, float_t } type;

template
T(Integer) : type(int_t) {}

template
T(Floating) : type(float_t) {} // OK
};
< /code>
Мои мысли: cppreference говорит, что аргументы шаблона по умолчанию не рассматриваются во время проверки эквивалентности шаблона, поэтому я предполагаю, что компилятор просто видит шаблон  для обоих шаблонов функций, и мы получаем ошибку переопределения. видит шаблон 

Подробнее здесь: [url]https://stackoverflow.com/questions/79641044/overloading-function-templates-difference[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»