Ich habe folgende Template-Funktion: DieseC++ Specialized Konstruktor der Klasse ohne Vorlage Argumente (spitze Klammern überspringen)
template<>
int test_function(int arg) {return arg;}
:
template<typename T>
T test_function(T arg) {return arg;}
ich eine spezielle Version dieser für ganze Zahlen mit erstellen ist praktisch, wenn ich diese Funktion sehr oft mit ganzen Zahlen verwende. So kann ich es mit nennen:
test_function(some_integer); // easy!
test_function<int>(some_integer); // not necessary all the time.
Jetzt habe ich die folgende Klasse:
template<typename T>
class Foo
{
public:
Foo();
};
ich es nennen wollen in der Lage sein mit:
Foo foo1; // how do I do this?
Foo<int> foo2; // I don't want to use this all the time.
Wie kann ich definieren diese Klasse, um eine Instanz davon erstellen zu können, ohne spitze Klammern zu verwenden? Sollte nicht allzu schwer sein, denke ich, aber ich konnte es nicht so weit heraus ...
Sie müssen nicht die Spezialisierung von 'test_function' für' int' erstellen (es sei denn, es macht etwas anderes), es kann den Typ aus dem Argument ableiten. –
Konstruieren Sie es über eine make_-Funktion, um den Argumenttyp abzuleiten. Ein Beispiel finden Sie unter std :: make_tuple. –
@AntonSavin Ah ich sehe, danke für den Hinweis! – donald