Especificação parcial do parâmetro de modelo padrão
Por favor, explique-me porque o seguinte código cumpre e funciona perfeitamente. Estou muito confuso.
#include<iostream>
template<class A = int, class B=double>
class Base
{};
template<class B>
class Base <int, B>
{
public:
Base()
{
std::cout<<"it works!!!!!\n";
}
};
int main()
{
Base<> base; // it prints "it works!!!!!"
return 0;
}
Não deveria cair na forma generalizada da classe de modelo Base?