namespace std {
template<class Out, class charT>
class basic_format_context; // (1)
using format_context = basic_format_context<unspecified, char>; // (2)
using wformat_context = basic_format_context<unspecified, wchar_t>; // (3)
}
概要
実際に渡されたフォーマット引数を含む、フォーマット実行中の状態を保持するクラス。
テンプレートパラメータ制約
Out
はOutputIterator<const charT&>
であること
備考
出力イテレータの型はフォーマット関数に指定したイテレータである必要はない。内部でバッファリングを行う実装が可能である。
メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
arg |
フォーマット引数を取得する | C++20 |
out |
出力イテレータを取得する | C++20 |
advance_to |
出力イテレータを指定したイテレータに設定する | C++20 |
locale |
ロケールを取得する | C++20 |
メンバ型
名前 | 説明 | 対応バージョン |
---|---|---|
iterator |
出力イテレータ(Out と等しい) (type-alias) |
C++20 |
char_type |
文字の型(charT と等しい) (type-alias) |
C++20 |
formatter_type |
型T に対応するフォーマッターの型 (alias-template) |
C++20 |
実装例
namespace std {
template<class Out, class charT>
class basic_format_context {
basic_format_args<basic_format_context> args_;
Out out_;
std::optional<std::locale> locale;
public:
using iterator = Out;
using char_type = charT;
template<class T> using formatter_type = formatter<T, charT>;
basic_format_context(iterator out, std::basic_format_args<basic_format_context> args, std::optional<std::locale> locale = std::nullopt)
:args_(args)
,out_(out)
,locale_(locale)
{
}
basic_format_arg<basic_format_context> arg(size_t id) const {
return args_.get(id);
}
std::locale locale() {
return locale_.value_or(std::locale());
}
iterator out() {
return out_;
}
void advance_to(iterator it) {
out_ = it;
}
};
}
バージョン
言語
- C++20
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??