future_errc — std::future_errc
future_errc — std::future_errc
std::future_errc는 future/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_error의code()가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)에서 발생하는 오류의 종류를 식별하는 데 사용하는 열거형이에요.