diff --git a/lib/cpp/src/thrift/TToString.h b/lib/cpp/src/thrift/TToString.h
index 474429d..d91c58c 100644
--- a/lib/cpp/src/thrift/TToString.h
+++ b/lib/cpp/src/thrift/TToString.h
@@ -32,11 +32,15 @@
 namespace apache {
 namespace thrift {
 
+// unnamed namespace to enforce internal linkage - could be done with 'inline' when once have C++17
+namespace {
+const auto default_locale = std::locale("C");
+}
+
 template <typename T>
 std::string to_string(const T& t) {
   std::ostringstream o;
-  const static auto locale = std::locale("C");
-  o.imbue(locale);
+  o.imbue(default_locale);
   o << t;
   return o.str();
 }
@@ -45,8 +49,7 @@
 // is enabled.
 inline std::string to_string(const float& t) {
   std::ostringstream o;
-  const static auto locale = std::locale("C");
-  o.imbue(locale);
+  o.imbue(default_locale);
   o.precision(static_cast<std::streamsize>(std::ceil(static_cast<double>(std::numeric_limits<float>::digits * std::log10(2.0f) + 1))));
   o << t;
   return o.str();
@@ -54,8 +57,7 @@
 
 inline std::string to_string(const double& t) {
   std::ostringstream o;
-  const static auto locale = std::locale("C");
-  o.imbue(locale);
+  o.imbue(default_locale);
   o.precision(static_cast<std::streamsize>(std::ceil(static_cast<double>(std::numeric_limits<double>::digits * std::log10(2.0f) + 1))));
   o << t;
   return o.str();
@@ -63,8 +65,7 @@
 
 inline std::string to_string(const long double& t) {
   std::ostringstream o;
-  const static auto locale = std::locale("C");
-  o.imbue(locale);
+  o.imbue(default_locale);
   o.precision(static_cast<std::streamsize>(std::ceil(static_cast<double>(std::numeric_limits<long double>::digits * std::log10(2.0f) + 1))));
   o << t;
   return o.str();
