searching for an empty string in an empty string

Hi,

What should be the value of a pos variable in the following piece of code?

auto pos = std::string().find("");

I couldn’t find answer to that and noticed it varies between standard library implementations. For most I’ve checked pos is 0 (libstdc++, libcxx, msvc). I noticed it is npos for Oracle Solaris SunPRO. I think that both results are explainable. Is it an UB?

Regards,
Tomek

Hello Tomek,

What is your OS and the version of Studio you use?
What is your compile line for Studio?

Thanks,
Vladimir.

In the latest SunPRO 12.4 pos is 0 as well. Vladimir.

Hi Vladimir,

It is already a few years that I do not work for that company and I do not remember the exact version of the product. I think it was sunpro either 11 or 12. Also it may depend on the underlying std library you use. I remember that the default one - the rogue wave implementation (http://docs.roguewave.com/legacy-hpp/stdref/) had some serious issues and it was necessary to switch to stlport (there was a dedicated compiler flag). I think that stlport was returning npos as a result of such searching.

Regards,
Tomek

Hello Tomek,

your code is in C++11 style.
C++11 is supported in Studio compiler starting from 12.4.
with -std=c++11 gnu’s C++ library is used by studio and pos is 0.

Thanks,
Vladimir.