Ho modificato un paremeter in una funzione per accettare qualsiasi tipo di oggetto utilizzando un modello ma non posso usarlo in combinazione con altri parametri predefiniti, c'è qualcosa che mi manca?Perché non posso avere template e argomenti predefiniti?
#include <string>
#include <iostream>
class MyClass {
public:
std::wstring msg = L"hey";
MyClass(){};
};
class MyClass2{
public:
template<class T> MyClass2(T* t, int i);
};
template<class T>
MyClass2::MyClass2(T* t,int i=0){ std::wcout << t->msg << std::endl; }
int main(int argc, char **argv)
{
MyClass mc;
MyClass2 mc2(&mc);
return 0;
}
uscita:
practice.cpp:16:32: error: redeclaration of 'MyClass2::MyClass2(T*, int)' may not have default arguments [-fpermissive]
ho pensato che era ragionevole di non utilizzare i valori di default nel modello, ma c'è un motivo per gli altri parametri?