Template-Funktions-Spezialisierung in Template-Klasse
-
Na schön. Argument: Der Autor ist J.W..
-
stefanjann schrieb:
Aber das sollte in einem extra Thread diskutiert werden.
Gibt es schon:
http://www.c-plusplus.net/forum/272350
-
314159265358979 schrieb:
Na schön. Argument: Der Autor ist J.W..
Da ich J.W. nicht kenne, sehe ich das eher als persönliche Meinung deinerseits, was für mich über die Qualität des Buches nichts aussagt.
Es ist aber nicht das einzige Buch, was mir die Sache mit template<> bestätigt. Ich bin mir nicht ganz sicher, aber im Buch "Die C++ Programmiersprache" von Bjarne Stroupstup schreibt ähnliches. Und den Author wird mal ja wohl nicht in Frage stellen, oder?
-
trolololol
-
314159265358979 schrieb:
trolololol
Selber....
Hirn einschalten vor solchen Vorwürfen. Nicht jeder, der sich ein J.W.-Buch kauft, erkennt, was da vor ihm liegt. Vor allem Anfänger können nicht erkennen, ob das (ordentliches) C++ ist, was sie da gerade verinnerlichen.
-
stefanjann schrieb:
314159265358979 schrieb:
Na schön. Argument: Der Autor ist J.W..
Da ich J.W. nicht kenne, sehe ich das eher als persönliche Meinung deinerseits, was für mich über die Qualität des Buches nichts aussagt.
Es ist aber nicht das einzige Buch, was mir die Sache mit template<> bestätigt. Ich bin mir nicht ganz sicher, aber im Buch "Die C++ Programmiersprache" von Bjarne Stroupstup schreibt ähnliches. Und den Author wird mal ja wohl nicht in Frage stellen, oder?Pass mal auf. So ungefähr 99% hier im Forum können dir bestätigen, dass C++ von A bis Z nicht gut ist, dass Inhalte sogar manchmal (auch nebenbei) falsch vermittelt werden. Einmal kam sogar ein Typ an, der meinte: "Hey, ich hab mit dem Buch gelernt, mein Code-Stil ist aber gar nicht so schlecht. Seht mal". Hat uns dann was aus seinem letzten Pfojekt gezeigt. z.B. volkards Antwort: "War grad ein viertelstündchen Heulen. Darf sowas nicht jeden Tag machen." Und pumuckl fand auf Anhieb 20 Sachen zum meckern.
-
Hacker schrieb:
stefanjann schrieb:
314159265358979 schrieb:
Na schön. Argument: Der Autor ist J.W..
Da ich J.W. nicht kenne, sehe ich das eher als persönliche Meinung deinerseits, was für mich über die Qualität des Buches nichts aussagt.
Es ist aber nicht das einzige Buch, was mir die Sache mit template<> bestätigt. Ich bin mir nicht ganz sicher, aber im Buch "Die C++ Programmiersprache" von Bjarne Stroupstup schreibt ähnliches. Und den Author wird mal ja wohl nicht in Frage stellen, oder?Pass mal auf. So ungefähr 99% hier im Forum können dir bestätigen, dass C++ von A bis Z nicht gut ist, dass Inhalte sogar manchmal (auch nebenbei) falsch vermittelt werden. Einmal kam sogar ein Typ an, der meinte: "Hey, ich hab mit dem Buch gelernt, mein Code-Stil ist aber gar nicht so schlecht. Seht mal". Hat uns dann was aus seinem letzten Pfojekt gezeigt. z.B. volkards Antwort: "War grad ein viertelstündchen Heulen. Darf sowas nicht jeden Tag machen." Und pumuckl fand auf Anhieb 20 Sachen zum meckern.
Das ist übrigens dieser Thread, wenn der Link von arghonaut als Argument noch nicht gereicht hat:
http://www.c-plusplus.net/forum/294532@Threadersteller: Nimm 314159265358979 nicht so ernst, der ist so etwas wie der Forenkasper. Wenn du seine dummen Flames ignorierst (und ihm keine Angriffsfläche für ebensolche bietest), findest du gelegentlich sogar eine brauchbare Antwort, insbesondere wenn es um C++11 oder Metaprogrammierung geht.
-
stefanjann schrieb:
In meinem schlauen Buch "C++ von A bis Z" steht allerdings dass man bei überladenen Funktionen wo auch ein Template vorliegt unbedingt ein template<> schreiben muss, weil sonst der Compiler nicht weiß ob er auf das Template oder die Funktion zugreifen soll. Das Ergebnis sei ungewiss.
Ungewiss? Der Compiler weiß ziemlich genau, was er machen soll. Allerdings sind die Regeln alles andere als intuitiv, wenn man Funktionstemplate-Spezialisierungen und Überladungen gleichzeitig hat. Aber wofür willst du überhaupt spezialisieren? Du kannst wie bei einer Nicht-Template-Funktion überladen. Um meinen Punkt ein wenig zu untermauern: http://www.gotw.ca/publications/mill17.htm
-
SeppJ schrieb:
@Threadersteller: Nimm 314159265358979 nicht so ernst, der ist so etwas wie der Forenkasper. Wenn du seine dummen Flames ignorierst (und ihm keine Angriffsfläche für ebensolche bietest), findest du gelegentlich sogar eine brauchbare Antwort, insbesondere wenn es um C++11 oder Metaprogrammierung geht.
Ich fand es nur lustig, wie der TE nicht ein bisschen an seinem Buch zweifelt. Insbesondere, da nicht nur ich auf dessen Wert hingewiesen habe.
-
314159265358979 schrieb:
SeppJ schrieb:
@Threadersteller: Nimm 314159265358979 nicht so ernst, der ist so etwas wie der Forenkasper. Wenn du seine dummen Flames ignorierst (und ihm keine Angriffsfläche für ebensolche bietest), findest du gelegentlich sogar eine brauchbare Antwort, insbesondere wenn es um C++11 oder Metaprogrammierung geht.
Ich fand es nur lustig, wie der TE nicht ein bisschen an seinem Buch zweifelt. Insbesondere, da nicht nur ich auf dessen Wert hingewiesen habe.
Und hier, meine Damen und Herren, sehen wir einen österreichischen C++-Coder, der seine flames zu rechtfertigen versucht.
-
Vor allem österreichisch
-
314159265358979 schrieb:
Vor allem österreichisch
Du kommst doch aus Wien
-
314159265358979 schrieb:
SeppJ schrieb:
@Threadersteller: Nimm 314159265358979 nicht so ernst, der ist so etwas wie der Forenkasper. Wenn du seine dummen Flames ignorierst (und ihm keine Angriffsfläche für ebensolche bietest), findest du gelegentlich sogar eine brauchbare Antwort, insbesondere wenn es um C++11 oder Metaprogrammierung geht.
Ich fand es nur lustig, wie der TE nicht ein bisschen an seinem Buch zweifelt. Insbesondere, da nicht nur ich auf dessen Wert hingewiesen habe.
Ich hab nie geschrieben, dass ich NICHT an dem Buch zweifel, ganz im Gegenteil: schon alleine meine Formulierung "mein schlaues Buch" zeigt doch, dass ich nicht ganz mit dem Inhalt übereinstimme, denn sonst würde ich ja nicht stundenlang googeln müssen und es würde alles funktionieren. Ich kann's nur nicht leiden wenn man einfach ein "...das ist sch****" in den Raum wirft, ohne zu Agumentieren! Dann biete ich auch gerne Angrifsflächen für Flames!
Ich zähle mich nicht mehr zu den blutigen Anfängern, wohl habe ich aber noch ausreichend Wissenslücken, weil ich viele Dinge einfach noch nie gemacht habe oder noch nie gebraucht habe.
Ich hab mir natürlich den Thread über Herrn W. durchgelesen und bin schon bei anderen Threads auf die "Ungereimtheiten" des Buches/der Bücher hingewiesen worden. Auch deshalb hab ich das Buch erwähnt, weil ich schon vermutet habe, dass evtl was nicht stimmt. Also mein 314159265358979: so blauäugig wie du meinst bin ich nicht.Zurück zum Thema und eigentlichen Problem:
Wofür brauche ich dann eigentlich das template<> noch, wenn ich doch mit einer Überladung genausoweit komme. Im Visual Studio Manual habe ich das Regelwerk in welcher Reihenfolge die Funktionen gesucht werden gefunden, und ja, es ist alles andere als intuitiv, aber definitiv nicht schwer zu begreifen. Leider habe ich gerade keinen Pc zum testen da, das kann ich erst morgen wieder...ich werd's aber sicherlich morgen früh gleich testen.
-
stefanjann schrieb:
Wofür brauche ich dann eigentlich das template<> noch, wenn ich doch mit einer Überladung genausoweit komme.
WAs mich gerade verwirrt, ist, ob du mit diesem template<> explizite instantiierung meinst. Also so etwas:
template<class T, class Allocator> class vector { /* ...*/ }; template class vector<int, std::allocator<int> > {/* ... */};
Edit: Hat seldon schon gesagt. Du kannst natürlich auch sowas machen:
#include <iostream> using std::cout; template<typename type>//Mit templates void func(type const& ref) { std::cout << ref << '\n'; } void func(int a)//Hier komplett ohne templates { std::cout << a << '\n'; } int main() { func<int>(5); func(1); }
Edit: Hier könnte der Parameter deduziert werden, aber trotzdem :p