# std::locale::combine

From cppreference.com
< cpp‎ | locale‎ | 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` can be cv-qualified | it can be const-qualified, but not volatile-qualified

### See also

(constructor) | constructs a new locale (public member function)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/locale/locale/combine&oldid=177154"