Namespaces
Variants

C++ named requirements: UnformattedOutputFunction

From cppreference.net
C++ named requirements

요구사항

UnformattedOutputFunction 은 다음을 수행하는 스트림 출력 함수입니다:

1) 자동 저장 기간을 가진 basic_ostream::sentry 타입의 객체를 생성하며, 이는 다음을 수행합니다:
  • 출력 스트림에 eofbit 또는 badbit 이 설정된 경우, failbit 도 함께 설정합니다. 그리고 이 출력 스트림의 exception mask 에서 failbit 에 대한 예외가 활성화된 경우( ( exceptions ( ) & failbit ) ! = 0 ), ios_base::failure 를 throw합니다.
  • 해당되는 경우 tie()된 출력 스트림을 flush합니다.
2) 전송된 센트리(sentry)의 상태를 sentry::operator bool() 을 호출하여 확인합니다. 이는 basic_ios::good 과 동일합니다.
  • 연산자가 false 를 반환하거나 센트리의 생성자가 예외를 발생시키면 출력이 수행되지 않습니다.
  • 연산자가 true 를 반환하면, rdbuf ( ) - > sputc ( ) 을 호출하는 것처럼 출력 스트림에 문자를 삽입하여 원하는 출력을 수행하려 시도합니다. std::basic_ostream 의 다른 public 멤버들도 사용될 수 있지만, overflow() , xsputn() , sync() 를 제외한 rdbuf ( ) 의 가상 멤버들은 절대 호출되지 않습니다.
  • 출력 중 예외가 발생하면 출력 스트림의 badbit 을 설정합니다. 이 스트림의 예외 마스크 에서 badbit 에 대한 예외가 활성화된 경우( ( exceptions ( ) & badbit ) ! = 0 ), 예외는 다시 발생됩니다.
  • 예외가 발생하지 않으면 함수에서 지정된 값을 반환합니다.
3) 어떤 경우든, 예외로 종료되든 반환으로 종료되든, 센트리(sentry)의 소멸자는 이 함수를 떠나기 전에 호출됩니다.

표준 라이브러리

다음 표준 라이브러리 함수들은 UnformattedOutputFunction s 입니다.

**참고:** 제공된 HTML 코드에는 번역이 필요한 일반 텍스트가 포함되어 있지 않습니다. 모든 내용이 C++ 관련 용어, HTML 태그, 또는 태그 내의 코드로 구성되어 있어 번역 지침에 따라 그대로 유지됩니다.
(C++11 이후)

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 63 C++98 예외 처리 정책이 누락됨 추가됨
LWG 160 C++98 포착된 예외가 재발생되는지 결정하는 과정에서
존재하지 않는 함수 exception() 를 언급함
exceptions() 로 수정됨
LWG 165 C++98 rdbuf ( ) 에서 호출이 허용된
유일한 가상 멤버 함수는 overflow() 였음

xsputn() sync() 도 허용됨