@@ -47,92 +47,21 @@ string format(string_view fmt, const Args&... args)
4747## 事前条件
4848すべての引数の型`Ti`について`Context::formatter_type<Ti>`が`Formatter`要件を満たすこと。
4949
50- ## 効果
51-
52- (2)は次と等しい。
53-
54- ```cpp
55- return make_format_args<wformat_context>(args...);
56- ```
57- * wformat_context[ link /reference/format/basic_format_context.md]
50+ ## 戻り値
5851
59- (1 )は次と等しい。
52+ ### (1)
6053
6154```cpp
6255return {basic_format_arg<Context>(args)...}
6356```
64- * basic_format_arg[link /reference/format/basic_format_arg.md]
57+ * basic_format_arg[ link /reference/format/basic_format_arg/op_constructor .md]
6558
66- ただし、便宜上、[`basic_format_arg`](/reference/format/basic_format_arg.md)は次のprivateメンバを持つとする。
67- (これらのprivateメンバは規格に含まれない)
59+ ### (2)
6860
6961``` cpp
70- namespace std {
71- template<class Context>
72- class basic_format_arg {
73- public:
74- class handle;
75-
76- private:
77- using charT = typename Context::char_type;
78-
79- variant<monostate, bool, charT,
80- int, unsigned int, long long int, unsigned long long int,
81- float, double, long double,
82- const charT*, basic_string_view<charT>,
83- const void*, handle> value;
84-
85- template<typename T> explicit basic_format_arg(const T& v) noexcept; // (a)
86- explicit basic_format_arg(float n) noexcept; // (b)
87- explicit basic_format_arg(double n) noexcept; // (c)
88- explicit basic_format_arg(long double n) noexcept; // (d)
89- explicit basic_format_arg(const charT* s); // (e)
90-
91- template<class traits>
92- explicit basic_format_arg(
93- basic_string_view<charT, traits> s) noexcept; // (f)
94-
95- template<class traits, class Allocator>
96- explicit basic_format_arg(
97- const basic_string<charT, traits, Allocator>& s) noexcept; // (g)
98-
99- explicit basic_format_arg(nullptr_t) noexcept; // (h)
100-
101- template<class T>
102- explicit basic_format_arg(const T* p) noexcept; // (i)
103-
104- template<class Ctx, class... Args>
105- friend format_arg_store<Ctx, Args...>
106- make_format_args(const Args&... args);
107- };
108- }
62+ return make_format_args<wformat_context>(args...);
10963```
110- * variant[ link /reference/variant/variant.md]
111- * monostate[ link /reference/variant/monostate.md]
112- * handle[ link /reference/format/basic_format_arg/handle.md]
113- * basic_string[ link /reference/string/basic_string.md]
114- * basic_string_view[ link /reference/string_view/basic_string_view.md]
115- * basic_format_arg[ link /reference/format/basic_format_arg.md]
116-
117- ここで、それぞれの効果は次と等しい。
118-
119- * (a):
120- * ` T ` が` bool ` または` charT ` なら、` value ` を` v ` で初期化
121- * または、` T ` が` char ` かつ` charT ` が` wchar_t ` なら、` value ` を` static_cast<wchar_t>(v) ` で初期化
122- * または、` T ` が符号つき整数型かつ` sizeof(T) <= sizeof(int) ` なら、` value ` を` static_cast<int>(v) ` で初期化
123- * または、` T ` が符号なし整数型かつ` sizeof(T) <= sizeof(unsigned int) ` なら、` value ` を` static_cast<unsigned int>(v) ` で初期化
124- * または、` T ` が符号つき整数型かつ` sizeof(T) <= sizeof(long long int) ` なら、` value ` を` static_cast<long long int>(v) ` で初期化
125- * または、` T ` が符号なし整数型かつ` sizeof(T) <= sizeof(unsigned long long int) ` なら、` value ` を` static_cast<unsigned long long int>(v) ` で初期化
126- * または、` value ` を` handle(v) ` で初期化
127- * (b),(c),(d): ` value ` を` n ` で初期化
128- * (e): ` value ` を` s ` で初期化 (` s ` は有効なC文字列であること)
129- * (f): ` value ` を` s ` で初期化
130- * (g): ` value ` を` basic_string_view<charT>(s.data(), s.size()) ` で初期化
131- * (h): ` value ` を` static_cast<const void*>(nullptr) ` で初期化
132- * (i): ` value ` を` p ` で初期化 (` is_void_v<T> ` が` true ` であること)
133-
134- ## 戻り値
135- ` {basic_format_arg<Context>(args)...} `
64+ * wformat_context[ link /reference/format/basic_format_context.md]
13665
13766## 実装例
13867``` cpp
@@ -150,7 +79,7 @@ namespace std {
15079 }
15180}
15281```
153- * basic_format_arg[link /reference/format/basic_format_arg.md]
82+ * basic_format_arg[link /reference/format/basic_format_arg/op_constructor .md]
15483* wformat_context[link /reference/format/basic_format_context.md]
15584
15685## バージョン
0 commit comments