Betrachten Sie die folgende Implementierung eines Template-Klasse:Vorlagentyp Abzug für Membervariablen und Funktionsargumente
template<class T>
class MyClass
{
public:
void setVar1(const T& v1)
{
var1 = v1;
}
void setVar2(const T1& v2)
{
var2 = v2;
}
T var1;
T1 var2;
};
Wenn die Template-Parameter T
ein Grundtyp ist (wie float
, double
oder long double
) Ich möchte habe T1 = T
.
Wenn der Vorlagenparameter T
std::complex<float>
ist, möchte ich T=std::complex<float>
und T1 = float
haben. Ähnlich für std::complex<double>
und std::complex<long double>
.
Ableiten der Typ der Variablen ist an Template type derivation diskutiert
jedoch die Zusatzelementfunktionen Nutzung ihrer Lösung in diesem Zusammenhang verhindert.
Wenn Sie fügen Sie einfach 'T1 = Typname myTypeTraits mit :: Typ;' vor den Elementfunktionen, die Lösung arbeiten sollte. Welche Probleme hast du gesehen? –
Eine interne (und private) Traits-Klasse mit einer Spezialisierung für Template-Template-Argumente scheint ein Weg zu einer Lösung zu sein. –
A [mögliche Lösung] (https://wandbox.org/permlink/JjVdJ3kuLzKrpeg0), ich bin sicher, es gibt einfachere Möglichkeit, aber –