std::locale::combine(3)

NAME
std::locale::combine - std::locale::combine

Synopsis
   Defined in header <locale>
   template< class Facet >
   locale combine( const locale& other ) const;
   Constructs a locale object which is a copy of *this except for the facet of type
   Facet, which is copied from other.
   The program is ill-formed if Facet is not a facet or it is a volatile-qualified
   facet.

Return value
   The new, nameless, locale.

Exceptions
   std::runtime_error if other does not implement Facet.

Example
// Run this code
 #include <iostream>
 #include <locale>
 int main()
 {
     const double number = 1000.25;
     std::cout << "\"C\" locale: " << number << '\n';
     std::locale loc = std::locale()
         .combine<std::numpunct<char>>(std::locale("en_US.UTF8"));
     std::cout.imbue(loc);
     std::cout << "\"C\" locale with en_US numpunct: " << number << '\n';
 }

Output:
 "C" locale: 1000.25
 "C" locale with en_US numpunct: 1,000.25
   Defect reports
   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.
     DR Applied to Behavior as published Correct behavior
   LWG 14 C++98 locale::combine was non-const made const
   LWG 436 C++98 it was unclear whether Facet it can be const-qualified, but not
                      can be cv-qualified volatile-qualified

See also
   constructor constructs a new locale
                 (public member function)