Add a note about using ranged-based for loop with wxString

It is surprising that "for (auto& c: s)" doesn't compile, so document
this and propose a replacement.

Do not document the fact that "for (auto c: s)" actually allows to
modify the string via "c" (which is still wxUniCharRef) as this is
probably just going to confuse people more than help.
This commit is contained in:
Vadim Zeitlin 2021-04-11 13:24:33 +02:00
parent c5ab151a72
commit cf2bb21885

View File

@ -255,6 +255,11 @@ n:
string iterators instead if possible or replace this expression with string iterators instead if possible or replace this expression with
@code s.c_str() + n @endcode otherwise. @code s.c_str() + n @endcode otherwise.
- When using C++11 range-based for loop, the natural construct for iterating
over wxString @code for ( auto& ch: s ) @endcode doesn't compile because of
the unusual iterator type and @code for ( wxUniCharRef ch: s ) @endcode
needs to be used instead.
Another class of problems is related to the fact that the value returned by Another class of problems is related to the fact that the value returned by
@c c_str() itself is also not just a pointer to a buffer but a value of helper @c c_str() itself is also not just a pointer to a buffer but a value of helper
class wxCStrData which is implicitly convertible to both narrow and wide class wxCStrData which is implicitly convertible to both narrow and wide