@@ -162,6 +162,33 @@ void for_each(Tuple &&tup, F &&f) {
162
162
const auto indexes = get_indexes (tup);
163
163
for_each (indexes, std::forward<Tuple>(tup), std::forward<F>(f));
164
164
}
165
+
166
+ template <typename Arg>
167
+ FMT_CONSTEXPR const char * format_str_quoted (bool add_space, const Arg&,
168
+ typename std::enable_if<!is_like_std_string<typename std::decay<Arg>::type>::value>::type* = nullptr ) {
169
+ return add_space ? " {}" : " {}" ;
170
+ }
171
+
172
+ template <typename Arg>
173
+ FMT_CONSTEXPR const char * format_str_quoted (bool add_space, const Arg&,
174
+ typename std::enable_if<is_like_std_string<typename std::decay<Arg>::type>::value>::type* = nullptr ) {
175
+ return add_space ? " \" {}\" " : " \" {}\" " ;
176
+ }
177
+
178
+ FMT_CONSTEXPR const char * format_str_quoted (bool add_space, const char *) {
179
+ return add_space ? " \" {}\" " : " \" {}\" " ;
180
+ }
181
+ FMT_CONSTEXPR const wchar_t * format_str_quoted (bool add_space, const wchar_t *) {
182
+ return add_space ? L" \" {}\" " : L" \" {}\" " ;
183
+ }
184
+
185
+ FMT_CONSTEXPR const char * format_str_quoted (bool add_space, const char ) {
186
+ return add_space ? " '{}'" : " '{}'" ;
187
+ }
188
+ FMT_CONSTEXPR const wchar_t * format_str_quoted (bool add_space, const wchar_t ) {
189
+ return add_space ? L" '{}'" : L" '{}'" ;
190
+ }
191
+
165
192
} // namespace internal
166
193
167
194
template <typename T>
@@ -185,11 +212,7 @@ struct formatter<TupleT, Char,
185
212
}
186
213
internal::copy (formatting.delimiter , out);
187
214
}
188
- if (formatting.add_delimiter_spaces && i > 0 ) {
189
- format_to (out, " {}" , v);
190
- } else {
191
- format_to (out, " {}" , v);
192
- }
215
+ format_to (out, internal::format_str_quoted ((formatting.add_delimiter_spaces && i > 0 ), v), v);
193
216
++i;
194
217
}
195
218
@@ -252,11 +275,7 @@ struct formatter<RangeT, Char,
252
275
}
253
276
internal::copy (formatting.delimiter , out);
254
277
}
255
- if (formatting.add_delimiter_spaces && i > 0 ) {
256
- format_to (out, " {}" , *it);
257
- } else {
258
- format_to (out, " {}" , *it);
259
- }
278
+ format_to (out, internal::format_str_quoted ((formatting.add_delimiter_spaces && i > 0 ), *it), *it);
260
279
if (++i > formatting.range_length_limit ) {
261
280
format_to (out, " ... <other elements>" );
262
281
break ;
0 commit comments