- istream[meta header]
- std[meta namespace]
- basic_istream[meta class]
- function[meta id-type]
int sync();ストリームバッファに対し、同期処理を指示する。
sentryオブジェクトを構築する。sentryオブジェクトが失敗を示した場合、何もしない。rdbuf()->pubsync()を呼び出す。ただし、rdbuf()がヌルポインタなら何もしない。rdbuf()->pubsync()が-1を返した場合、ローカルエラー状態にbadbitを設定する。
- 成功した場合
0。 - 失敗した場合
-1。rdbuf()がヌルポインタの場合。rdbuf()->pubsync()が-1を返した場合。
int sync() {
try {
sentry s(*this, true);
if (s) {
if (auto sb = rdbuf()) {
if (sb->pubsync() != -1) {
return 0;
}
setstate(badbit);
}
}
} catch (...) {
例外を投げずにbadbitを設定する;
if ((exceptions() & badbit) != 0) {
throw;
}
}
return -1;
}- sentry[link sentry.md]
- rdbuf()[link /reference/ios/basic_ios/rdbuf.md]
- pubsync()[link /reference/streambuf/basic_streambuf/pubsync.md]
- setstate[link /reference/ios/basic_ios/setstate.md]
- badbit[link /reference/ios/ios_base/type-iostate.md]
- exceptions()[link /reference/ios/basic_ios/exceptions.md]
- C++98
basic_streambuf::pubsync- P1264R2 Revising the wording of stream input operations
- C++23でローカルエラー状態の概念が導入され、入力関数のエラー処理セマンティクスが明確化された