J'ai supposé que les boucles for basées sur l'intervalle supporteraient les chaînes de caractères de style C.
void print_C_str(const char* str)
{
for(char c : str)
{
cout << c;
}
}
Cependant, ce n'est pas le cas, la norme [stmt.ranged] (6.5.4)
dit que le système "range-based-for" fonctionne dans l'une des 3 possibilités suivantes :
- L'intervalle est un tableau
- La gamme est une classe avec un appelable
begin
yend
méthode - Il existe un ADL accessible dans un espace de noms associé (plus le
std
espace de noms)
Quand j'ajoute begin
y end
fonctions pour const char*
dans l'espace de nom global, je reçois toujours des erreurs (à la fois de VS12 et de GCC 4.7).
Existe-t-il un moyen de faire fonctionner les boucles for basées sur l'intervalle avec les chaînes de style C ?
J'ai essayé d'ajouter une surcharge à namespace std
et cela a fonctionné mais, d'après ce que j'ai compris, il est illégal d'ajouter des surcharges à la fonction namespace std
(est-ce correct ?)