Warum funktioniert es nicht, wenn man hat:
template
struct X
{
};
dies nicht funktioniert:
X<1> nicht_ok;
aber dies funktioniert:
X<1.0> ok;
Sollte es nicht einheitliches Verhalten geben? Wenn ich eine int in eine Funktion übergeben kann, die double als Arg nimmt, warum kann ich das nicht mit <> (Template) tun? Gibt es einen Weg, dies zu umgehen (ich brauche dies, um ein Template zu erstellen (statt zwei mit unterschiedlichen Namen), das mir ermöglicht, entweder double&& oder int&& zu übernehmen)? Ich habe versucht, eine Klasse zu übergeben, die eine Konvertierungskonstruktor von int zu dieser Klasse hat, aber das stürzt den VS-Compiler ab. Ich weiß nicht, was ich tun soll. Ich bin blockiert. Ich habe auch Spezialisierung versucht:
template
struct X;
template<>
struct X
{
};
template<>
struct X
{
};
aber Überraschung Überraschung funktioniert nicht. Warum? Ich habe ein primäres Template und dann möchte ich es für bestimmte Typen spezialisieren, warum funktioniert es nicht?