- format[meta header]
- function template[meta id-type]
- std[meta namespace]
- cpp20[meta cpp]
namespace std {
template<class... Args>
size_t formatted_size(format_string<Args...> fmt, Args&&... args); // (1)
template<class... Args>
size_t formatted_size(wformat_string<Args...> fmt, Args&&... args); // (2)
template<class... Args>
size_t formatted_size(const locale& loc, format_string<Args...> fmt, Args&&... args); // (3)
template<class... Args>
size_t formatted_size(const locale& loc, wformat_string<Args...> fmt, Args&&... args); // (4)
}- format_string[link basic_format_string.md]
- wformat_string[link basic_format_string.md]
- locale[link /reference/locale/locale.md]
書式文字列fmtに従ったフォーマットでargs...の文字列表現を格納するために必要な文字数を返す。
- (1): マルチバイト文字列版
- (2): ワイド文字列版
- (3): マルチバイト文字列版 (ロケール指定あり)
- (4): ワイド文字列版 (ロケール指定あり)
formatted_size("The answer is {}.", 42); // => 17- 書式文字列は定数式であり、
string_view(ワイド文字列版はwstring_view)に暗黙変換できること。 - 書式文字列にエラーがないこと。例えば、
- 閉じていないカッコなどの構文エラーがないこと。
- 実際に渡している引数の型が書式文字列中の置換フィールドが要求する型に合うこと。
charTをdecltype(fmt)::value_typeとして、
Argsのそれぞれの引数Tiに対応するフォーマッターformatter<remove_cvref_t<Ti>, charT>がBasicFormatter要件を満たす。
書式文字列fmtに従ったフォーマットでargs...の文字列表現を格納するために必要な文字数。
書式文字列が正しくなかったり、フォーマット実行時に失敗したりした場合、format_errorを投げる。
マルチバイト文字列、ワイド文字列の区別は、可変長引数部分で受け取れる文字列の型にも適用される。
#include <iostream>
#include <format>
int main()
{
std::cout << std::formatted_size("The answer is {}.", 42) << std::endl;
}17
- C++20
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??