future_errc — std::future_errc

future_errc — std::future_errc

std::future_errcfuture/promise 라이브러리의 오류 조건을 나타내는 스코프 열거형이에요. C++11에서 도입됐어요. <future> 헤더에 있어요.

std::future_error 예외에 담겨 던져지는 오류 코드의 종류예요.

출처: cppreference

본문

// <future> 헤더, C++11
enum class future_errc {
    broken_promise            = /* implementation-defined */,
    future_already_retrieved  = /* implementation-defined */,
    promise_already_satisfied = /* implementation-defined */,
    no_state                  = /* implementation-defined */
};

열거자 의미

열거자 상황
broken_promise promise가 미리 파괴되어 값/예외를 줄 수 없음
future_already_retrieved future 값을 이미 get()으로 꺼냄 (공유 상태 재접근 불가)
promise_already_satisfied promise에 값을 이미 설정함 (재설정 불가)
no_state 공유 상태가 없음 (기본 생성 future 등)

사용 예

#include <future>
#include <iostream>

std::future<int> f;
try {
    f.get();   // 아무 공유 상태도 없음 → no_state
} catch (const std::future_error& e) {
    if (e.code() == std::errc(std::future_errc::no_state)) {
        std::cout << "no_state\n";
    }
}
std::promise<int> p;
p.set_value(10);
try {
    p.set_value(20);   // 이미 설정 → promise_already_satisfied
} catch (const std::future_error& e) {
    // 처리
}

특징

  • std::future_errorcode()future_errc를 담아요.
  • std::make_error_code(future_errc)std::error_code를 만들 수 있고, std::future_category() 범주를 가져요.
  • future/promise의 잘못된 사용을 진단하는 데 쓰여요.
std::error_code ec = std::make_error_code(std::future_errc::broken_promise);

std::future_errc는 비동기 결과 통신(future/promise)에서 발생하는 오류의 종류를 식별하는 데 사용하는 열거형이에요.

더 알아보기 (Learn more)

cppreference