
on Sat Apr 21 2012, Olaf van der Spek <ml-AT-vdspek.org> wrote:
On Fri, Apr 20, 2012 at 3:19 PM, Mathias Gaunard <mathias.gaunard@ens-lyon.org> wrote:
On 20/04/12 14:15, Olaf van der Spek wrote:
Hi,
What do you expect this code to do? Is b true or false? And why?
Is this expected behaviour?
#include<boost/range/iterator_range.hpp> #include<string>
int main() { std::string s = "Olaf"; boost::iterator_range<std::string::iterator> r(s); bool a = r == s;
a is true.
bool b = r == "Olaf";
b is false, "Olaf" is one character longer than r.
It is current behaviour. But is it expected behaviour?
Yes. Until the language gives us a way to distinguish string literals from other arbitrary arrays of char, it's the best we can do. The alternative is to have generic code suddenly stop working when T==char. Regards, -- Dave Abrahams BoostPro Computing http://www.boostpro.com