最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

function
<system_error>

# std::error_condition::コンストラクタ(C++11)

    error_condition() noexcept;                                   // (1)

    error_condition(int val, const error_category& cat) noexcept; // (2)

    template <class ErrorConditionEnum>
    error_condition(ErrorConditionEnum e) noexcept;               // (3)

## error_conditionオブジェクトの構築

- (1) : デフォルトコンストラクタ
- (2) : エラー値とエラーカテゴリを受け取って構築する。
- (3) : `is_error_condition_enum<ErrorCodeEnum>::value == true`となる型のエラー値を受け取って構築する。

## 効果

- (1) : 値`0`(正常値)で構築する。エラーカテゴリは`generic_category()`と見なされる。
- (3) : `*this = make_error_condition(e);` となる。

## 例外

投げない

## 備考

- (3) : `is_error_condition_enum`が`false`となる場合、この関数はオーバーロード解決から除外される。

## 例

    #include <iostream>
    #include <system_error>

    int main()
    {
      // デフォルトコンストラクタ
      std::cout << "default ctor" << std::endl;
      {
        std::error_condition econd;

        if (econd) {
          std::cout << "error" << std::endl;
        }
        else {
          std::cout << "success" << std::endl;
        }

        std::cout << econd.value() << std::endl;
        std::cout << econd.category().name() << std::endl;
      }

      // エラー値とエラーカテゴリを受け取って構築
      std::cout << std::endl << "value & category ctor" << std::endl;
      {
        std::error_condition econd(static_cast<int>(std::errc::invalid_argument),
                                   std::generic_category());

        if (econd) {
          std::cout << "error" << std::endl;
        }
        else {
          std::cout << "success" << std::endl;
        }

        std::cout << econd.value() << std::endl;
        std::cout << econd.category().name() << std::endl;
      }

      // is_error_condition_enumが特殊化された型のエラー値を受け取って構築
      std::cout << std::endl << "ErrorConditionEnum ctor" << std::endl;
      {
        std::error_condition econd(std::errc::invalid_argument);

        if (econd) {
          std::cout << "error" << std::endl;
        }
        else {
          std::cout << "success" << std::endl;
        }

        std::cout << econd.value() << std::endl;
        std::cout << econd.category().name() << std::endl;
      }
    }

### 出力

    default ctor
    success
    0
    generic

    value & category ctor
    error
    22
    generic

    ErrorConditionEnum ctor
    error
    22
    generic

## バージョン

### 言語

- C++11

### 処理系

- Clang: ??
- GCC: 4.7.0 ✅
- ICC: ??
- Visual C++: 2010 ✅

## 参照