Warning: there are no arguments to `setw' that depend on a template parameter,...
-
Hallo,
Ich bekomme bei meinem G++ (aus CodeBlocks) folgende Warnung (bzw. Fehlermeldung)
warning: there are no arguments to `setw' that depend on a template parameter, so a declaration of `setw' must be available
Das bei folgenden Code
template <class T> std::string val2string(const T val, const std::size_t width, const char fillchar) { std::stringstream strm; strm.fill(fillchar); strm << setw(width) << val; return strm.str(); }Könnte mir einer sagen was das bedeutet.
Ich habe zur Zeit durch Angabe von -fpermissive aus dem Fehler eine Warnung gemacht. So richtig gut finde ich das aber nicht.Ciao
-
Für die parametrisierten Manipulatoren (dazu gehört auch setw) benötigst du den Header <iomanip>.
btw, Wertparameter benötigen kein const, um den Aufrufer zu schützen ;):
template<typename T> std::string val2string(const T& val/*Referenz!!*/, size_t width/*size_t ist nicht in std*/,char fillchar) { //... }
-
CStoll schrieb:
btw, Wertparameter benötigen kein const, um den Aufrufer zu schützen

Hilft aber, vor sich selbst zu schützen, wenn man nicht vorhat, den Wert in der Funktion zu verändern.
-
Das mit der Referenz auf val und size_t habe ich mal geändert.
Das Einfügen von iomanip plus Hinzufügen von std:: vor setw hat dann geholfen.
Ich hatte zuerst nur iomanip eingefügt und das hat nichts geändert. Da gibt es wohl setw noch einmal woanders.Danke