я хочу использовать рекурсивные вариативные шаблоны с базовым случаем с более чем двумя типами. Следующий пример не компилируется. В чем может быть проблема?
Я ожидал, что f‹int, int›(5) вызовет такой случай:
[с T = int; Арг = целое; Аргументы = {число}]
но это, похоже, не вариант для компилятора (g++ c++17);)
template<class T, typename Arg, typename... Args>
void f(T a) {
}
template<class T, typename Arg>
void f (T a) {
}
int main() {
f<int, int>(5);
return 0;
}
<source>: In function 'int main()':
<source>:11:18: error: call of overloaded 'f<int, int>(int)' is ambiguous
11 | f<int, int>(5);
| ^
<source>:2:6: note: candidate: 'void f(T) [with T = int; Arg = int; Args = {}]'
2 | void f(T a) {
| ^
<source>:6:6: note: candidate: 'void f(T) [with T = int; Arg = int]'
6 | void f (T a) {
| ^
Compiler returned: 1