@@ -237,53 +237,56 @@ locale::__imp::__imp(const string& name, size_t refs) : facet(refs), facets_(N),
237237 if (facets_[i])
238238 facets_[i]->__add_shared ();
239239
240- {
241- std::fprintf (stderr, " Creating collate_byname<char>\n " );
242- auto * byname = new collate_byname<char >(name_);
243-
244- std::fprintf (stderr, " Installing collate_byname<char>\n " );
245- install (byname);
246- }
240+ #define _DOIT (...) \
241+ do { \
242+ std::fprintf (stderr, " Creating " #__VA_ARGS__ " \n " ); \
243+ auto * the_facet = new __VA_ARGS__ (name_); \
244+ \
245+ std::fprintf (stderr, " Installing " #__VA_ARGS__ " \n " ); \
246+ install (the_facet); \
247+ } while (false )
248+
249+ _DOIT (collate_byname<char >);
247250#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
248- install ( new collate_byname<wchar_t >(name_) );
251+ _DOIT ( collate_byname<wchar_t >);
249252#endif
250- install ( new ctype_byname<char >(name_) );
253+ _DOIT ( ctype_byname<char >);
251254#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
252- install ( new ctype_byname<wchar_t >(name_) );
255+ _DOIT ( ctype_byname<wchar_t >);
253256#endif
254- install ( new codecvt_byname<char , char , mbstate_t >(name_) );
257+ _DOIT ( codecvt_byname<char , char , mbstate_t >);
255258#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
256- install ( new codecvt_byname<wchar_t , char , mbstate_t >(name_) );
259+ _DOIT ( codecvt_byname<wchar_t , char , mbstate_t >);
257260#endif
258261 _LIBCPP_SUPPRESS_DEPRECATED_PUSH
259- install ( new codecvt_byname<char16_t , char , mbstate_t >(name_) );
260- install ( new codecvt_byname<char32_t , char , mbstate_t >(name_) );
262+ _DOIT ( codecvt_byname<char16_t , char , mbstate_t >);
263+ _DOIT ( codecvt_byname<char32_t , char , mbstate_t >);
261264 _LIBCPP_SUPPRESS_DEPRECATED_POP
262265#if _LIBCPP_HAS_CHAR8_T
263- install ( new codecvt_byname<char16_t , char8_t , mbstate_t >(name_) );
264- install ( new codecvt_byname<char32_t , char8_t , mbstate_t >(name_) );
266+ _DOIT ( codecvt_byname<char16_t , char8_t , mbstate_t >);
267+ _DOIT ( codecvt_byname<char32_t , char8_t , mbstate_t >);
265268#endif
266- install ( new numpunct_byname<char >(name_) );
269+ _DOIT ( numpunct_byname<char >);
267270#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
268- install ( new numpunct_byname<wchar_t >(name_) );
271+ _DOIT ( numpunct_byname<wchar_t >);
269272#endif
270- install ( new moneypunct_byname<char , false >(name_) );
271- install ( new moneypunct_byname<char , true >(name_) );
273+ _DOIT ( moneypunct_byname<char , false >);
274+ _DOIT ( moneypunct_byname<char , true >);
272275#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
273- install ( new moneypunct_byname<wchar_t , false >(name_) );
274- install ( new moneypunct_byname<wchar_t , true >(name_) );
276+ _DOIT ( moneypunct_byname<wchar_t , false >);
277+ _DOIT ( moneypunct_byname<wchar_t , true >);
275278#endif
276- install ( new time_get_byname<char >(name_) );
279+ _DOIT ( time_get_byname<char >);
277280#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
278- install ( new time_get_byname<wchar_t >(name_) );
281+ _DOIT ( time_get_byname<wchar_t >);
279282#endif
280- install ( new time_put_byname<char >(name_) );
283+ _DOIT ( time_put_byname<char >);
281284#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
282- install ( new time_put_byname<wchar_t >(name_) );
285+ _DOIT ( time_put_byname<wchar_t >);
283286#endif
284- install ( new messages_byname<char >(name_) );
287+ _DOIT ( messages_byname<char >);
285288#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
286- install ( new messages_byname<wchar_t >(name_) );
289+ _DOIT ( messages_byname<wchar_t >);
287290#endif
288291#if _LIBCPP_HAS_EXCEPTIONS
289292 } catch (...) {
0 commit comments