Eigene Implementierung von to_string(C++11) in namespace std?

27/08/2014 - 23:54 von Andreas Huennebeck | Report spam
Ist es legal, wenn man in C++11 die Funktion

std::string to_string(const IrgendeinTyp& objekt);

im namespace std implementiert, oder ist dieser namespace für eigene
Implementierungen nicht erlaubt?

Hintergrund: Ich habe eine Templatefunktion, die std::to_string() für den
Templateparameter ruft. Ich muss im Template std::to_string() schreiben,
wenn ich nicht vor dem include der Headerdatei 'using namespace std'
hinschreiben möchte (was ich ungern mache). Dann aber funktionieren die
Aufrufe der Templatefunktion nur mit Typen, für die to_string() im namespace
std implementiert ist.

Tschau
Andreas
Andreas Hünnebeck | email: acmh@gmx.de
PGP-Key: http://www.huennebeck-online.de/pub...ndreas.asc
GPG-Key: http://www.huennebeck-online.de/pub...ndreas.asc
 

Lesen sie die antworten

#1 ram
28/08/2014 - 15:50 | Warnen spam
Andreas Huennebeck writes:
Ist es legal, wenn man in C++11 die Funktion
std::string to_string(const IrgendeinTyp& objekt);
im namespace std implementiert, oder ist dieser namespace für eigene
Implementierungen nicht erlaubt?



Es verstößt nicht gegen das StGB und ist auch in C++ erlaubt:

namespace user { namespace std { void to_string(){} }}

, außer, Du meinst »::std« mit »std«.

»The behavior of a C++ program is undefined if it adds
declarations or definitions to namespace std or to a
namespace within namespace std unless otherwise specified.«,
17.6.4.2.1 N3797

Na gut, diese ISO-Leute können sich auch nicht so genau
ausdrücken, aber aus dem bestimmten Singular kann man
doch entnehmen, daß sie wohl »::std« meinen.

Ähnliche fragen