std::error_code 비교 연산자

std::error_code 비교 연산자 (operator== 등)

std::error_code를 서로 비교하거나, error_codeerror_condition을 비교하는 연산자들이에요. 오류 코드의 동등성을 판정해요. C++11부터 있어요.

출처: cppreference

본문

<system_error> 헤더에 정의돼 있고, std::error_code용 비교 연산자들이에요.

bool operator==( const error_code& lhs, const error_code& rhs ) noexcept;
bool operator!=( const error_code& lhs, const error_code& rhs ) noexcept;

bool operator==( const error_code& lhs, const error_condition& rhs ) noexcept;
bool operator==( const error_condition& lhs, const error_code& rhs ) noexcept;
// 등
  • error_code를 비교할 때는 값(value())과 카테고리(category())가 모두 같아야 ==true예요. 카테고리가 다르면 같은 숫자 값이라도 같지 않다고 판정돼요.
  • error_codeerror_condition을 비교할 때는 error_code::default_error_condition()가 그 error_condition과 같은지(lhs.category().equivalent(lhs.value(), rhs) 형태)를 판정해요. 이를 통해 플랫폼 특정 코드가 표준 조건과 같은 의미인지 비교할 수 있어요.

예제를 보면요.

#include <system_error>
#include <iostream>

int main()
{
    std::error_code ec = std::errc::no_such_file_or_directory;

    // error_condition과 비교 — 플랫폼이 달라도 의미가 같으면 true
    if (ec == std::errc::no_such_file_or_directory)
        std::cout << "같은 오류 의미\n";

    // 두 error_code 비교: 값과 카테고리 모두 일치해야 함
    std::error_code ec2 = std::make_error_code(std::errc::no_such_file_or_directory);
    std::cout << std::boolalpha << (ec == ec2) << '\n'; // true
}

이 연산자 덕분에 error_code==로 오류 코드·조건에 대해 비교해 분기할 수 있어요.

더 알아보기 (Learn more)

cppreference