Я знаю, что это дурной тон и что в объявлении должны быть указаны значения по умолчанию, но если вы не возражаете, пожалуйста, на мгновение ... почему это компилируется?и что именно происходит?
#include <iostream>
using namespace std;
class test
{
public:
test(int n);
};
test::test(int n = 666)
{
cout << n;
}
int main()
{
test t;
cin.sync();
cin.ignore();
return 0;
}
Вывод: 666
.. как шаблоны влияют на один и тот же кусок кода?
template <class T>
class test
{
public:
test(int n);
};
template <class T>
test<T>::test(int n = 666)
{
cout << n;
}
int main()
{
test<int> t;
cin.sync();
cin.ignore();
return 0;
}
Ошибка: нет подходящего конструктора по умолчанию, доступного
Спасибо за ваше время!