gcc 4.5.1, SuSE Linux i686C++ statische Vorlage Mitglieder Initialisierung Ausgabe
Angenommen, wir folgenden Code haben:
template<typename realT> class B
{
public:
B() {std::cout << "B()" << std::endl;}
};
template<typename realT> class A
{
public:
static B<realT> static_var;
};
template<typename realT> B<realT> A<realT>::static_var;
template<> B<float> A<float>::static_var;
template<> B<double> A<double>::static_var;
int main()
{
A<float> test;
return 0;
}
In diesem Fall werden wir keine Ausgabe in stdout haben. Compiler keinen Code generieren float und double Spezialisierung der Klasse A.
Aber .. zu initialisieren, wenn wir Initialisierungen wie dies ändern werde:
template<> B<float> A<float>::static_var = B<float>();
template<> B<double> A<double>::static_var = B<double>();
der Compiler einen solchen Code generieren und wir haben Doppel "B()" in der Ausgabe.
Kann mir jemand helfen, solche Verhaltensweisen zu verstehen?
Danke für Ihre Antwort! – Ribtoks
Also, was tun Sie, wenn 'x' mit dem Standardkonstruktor (ohne C++ 11) initialisiert werden soll? – VF1