Переменная и не вариадическая функция шаблона перегружают частичное упорядочение - PullRequest
0 голосов
/ 11 сентября 2018

В кн. Полное шаблонное руководство второго издания (глава 16) .Было упомянуто, что одно специальное правило для частичного упорядочения двух совпадающих шаблонов функций заключается в том, что аргументы, поступающие из пакета параметров, не могут сопоставляться с невариантной шаблонной функцией.Я был удивлен, прочитав это, потому что я всегда писал код, подобный приведенному ниже образцу, который в конечном расширении соответствует не шаблонной функции.

#include <iostream>

template <typename T>
void f(T && t)
{
    std::cout << "HelloWorld!" << std::endl;
}


template <typename Head, typename ... Tail>
void f(Head && head, Tail && ... tail)
{
    std::cout << head << std::endl;
    f(std::forward<Tail>(tail)...);
}


int main()
{
    f(1,2,3);
}

Вывод

1
2
HelloWorld!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...