简体   繁体   中英

How many parameters does ios::setstate actually take?

Every definition I've seen of function ios::setstate( iostate state ) shows that the function takes ONE and ONLY ONE parameter yet when I compile a program with the following function call, everything compiles and runs just fine:

mystream.setstate( std::ios_base::badbit, true );

What exactly is the second parameter and why is there no documentation about it?

EDIT: I'm using the command line compiler of the latest version of Microsoft Visual Studio 2010.

It's required to accept a single argument, as you've noted, but implementations are allowed to extend member functions via parameters with default values (§17.6.5.5). In other words, as long as this works:

mystream.setstate( std::ios_base::badbit );

your compiler is conforming. Nothing says that your code doesn't have to work, though.

(Your library implementation has decided that a boolean parameter would be useful to have. You never notice it because it has a default value, but you can still get into implementation-specific territory and provide the argument yourself. Whether or not this is a good idea is obviously another question, but probably not.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM