Search code examples
c++stringstandards

std::string.npos validity


Was std::string.npos ever valid? (As opposed to the correct std::string::npos.)

I am seeing it a lot in an old project I'm working on, and it does not compile with VS2010.

Is it something from the pre-standard days?


Solution

  • No, std::string.npos was never valid, and no, it's not something from the pre-standard days.

    I see other answers mentioning that MSVC has allowed that notation.

    However, MSVC is not a very compliant compiler. For example, it lets you freely bind a temporary to a reference to non-const. For another example, for Windows GUI subsystem applications you have to use not well-documented switches to make it accept a standard main. Much has improved since Microsoft hired Herb Sutter (and other guy that I don't remember the name of right now) to fix up their monstrous compiler. And in relative terms it has been really great, but in absolute terms, well that compiler is still a bit lacking.