最終更新日時: 2026年01月20日 12時05分18秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<format>

# std::basic_format_args::コンストラクタ(C++20)

    basic_format_args() noexcept; // (1) C++20

    template<class... Args>
    basic_format_args(
      const format_arg_store<Context, Args...>& store) noexcept; // (2) C++20
    template<class... Args>
    constexpr
    basic_format_args(
      const format_arg_store<Context, Args...>& store) noexcept; // (2) C++26

## 概要

- (1): 空の`basic_format_args`を構築する
- (2): `make_format_args`の戻り値から浅いコピーで`basic_format_args`を構築する。

ただし、 `format_arg_store` は`make_format_args`の戻り値と同じ型であることを示す便宜上の名前であり、規格には含まれない。

## 例外

投げない。

## 実装例

    namespace std {
      template<class Context>
      class basic_format_args {
        size_t size_;
        const basic_format_arg<Context>* data_;

      public:
        basic_format_args() noexcept
          :size_(0)
        {}

        template<class... Args>
        basic_format_args(const format_arg_store<Context, Args...>& store) noexcept
          :size_(sizeof...(Args))
          ,data_(store.args.data())
        {}
      };
    }

## バージョン

### 言語

- C++20

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 参照

- P0645R10 Text Formatting
- P3391R2 `constexpr std::format`
  - C++26から`constexpr`に対応した