У меня есть код ниже, который я пробовал из курса, который я проводил, который в значительной степени выполняет то, что ожидается
#include <iostream>
template <typename T, class U = int>
class A {
public:
T x;
U y;
A(T x, U y) { std::cout << x << " " << y << std::endl; }
};
int main() {
A<char> a('A', 'A');
A<char, int>('A', 65);
A<char, char>('A', 'A');
return 0;
}
Но я не понимаю, как работают части ниже.Я понимаю, как работает часть параметров шаблона по умолчанию, но не понимаю, как код создает объект после создания экземпляра класса шаблона.
A<char, int>('A', 65);
A<char, char>('A', 'A');
Почему явный объект не создается, как в первом случае с A<char> a('A', 'A');
?Я не видел ошибок компиляции с g++ -Wall -Wextra --std=c++11
.Кроме того, если будет признателен конкретный пункт из cppreference, который объясняет это поведение, так как я упустил определение, где объясняется такое поведение.