#include <iostream>
#include <string>
#include <sstream>      /// istringstream


using namespace std;


template<typename S>
void StreamLocaleName(S& s,
                      string m)
{
    /// Get the stream's locale.
    locale loc = s.rdbuf()->getloc();

    /// Display locale name.
    cout << m << "'s locale: "
         << loc.name() << endl;
}


int main()
{
   string s {};
   istringstream iss {s};

   /// Display the istringstream's initial locale name.
   StreamLocaleName(iss, "iss");

   /// Set the istringstream's locale to POSIX
   locale posix {"POSIX"};
   iss.imbue(posix);

   /// Display the istringstream's new locale name.
   StreamLocaleName(iss, "iss");
}