#c #c 17
#c #c 17
Вопрос:
это мой код:
template <typename T, int index>
int echo(T t) {
return index - 1;
}
echo<3>(1); // error: invalid template argument for 'T', type expected
Я думаю, что компилятор полностью способен выводить T
.
Как я могу использовать echo
, когда T
это первый параметр шаблона, кроме приведенного ниже:
echo<decltype(x), 3>(x);
Комментарии:
1. Поменяйте местами параметры и поместите индекс первым?
2. Поменять
T
местами иindex
можно решить, но я хочу знать решение, когдаT
оно будет первым.3. вы не можете, могут быть выведены только параметры после явно указанных
4. Это похоже на аргументы функции по умолчанию. Вы можете не указывать их в вызове, но только в том случае, если все последующие также опущены.
5. У вас все еще есть возможность написать шаблон-оболочку, который просто меняет местами аргументы шаблона: demo на coliru