ich irgendwie diesen Bereich für Schleifen basierend angenommen würde C-StringsBereich basiert für Schleifen auf null Strings beendet
void print_C_str(const char* str)
{
for(char c : str)
{
cout << c;
}
}
Dies ist jedoch nicht der Fall ist, die Standard-[stmt.ranged] (6.5.4)
sagt, dass bereichsbasierte-für Unterstützung arbeitet in einer von 3 Möglichkeiten:
- der Bereich ist ein Array
- der Bereich wird eine Klasse mit einer abrufbaren
begin
undend
Verfahren - Es ist ADL erreichbar in einem zugehörigen Namensraum (plus
std
Namespace)
Wenn ich begin
und end
Funktionen für const char*
im globalen Namespace füge ich noch Fehler auftreten (von beiden VS12 und GCC 4.7).
Gibt es eine Möglichkeit, range-based-for-Schleifen mit C-Stil-Strings zu arbeiten?
Ich habe versucht, eine Überlastung zu namespace std
das Hinzufügen und das hat funktioniert, aber nach meinem Verständnis ist es illegal Überlastungen namespace std
hinzufügen (ist das richtig?)
können Sie rechtlich Vorlagen in std Namensraum spezialisiert. – inf
@bamboon true aber IIRC nur für benutzerdefinierte Typen und dies ist eine Überladung keine Spezialisierung und für einen eingebauten Typ, kein UDT. – Motti
Warum passierst du C-Saiten? –