Fix build under gcc 7.0

PiperOrigin-RevId: 270688621
diff --git a/cc/subtle/BUILD.bazel b/cc/subtle/BUILD.bazel
index 68b9def..d60ae9b 100644
--- a/cc/subtle/BUILD.bazel
+++ b/cc/subtle/BUILD.bazel
@@ -538,6 +538,7 @@
     hdrs = ["common_enums.h"],
     include_prefix = "tink",
     strip_include_prefix = "/cc",
+    deps = ["@com_google_absl//absl/strings"],
 )
 
 cc_library(
diff --git a/cc/subtle/CMakeLists.txt b/cc/subtle/CMakeLists.txt
index 4e57efb..7198e5e 100644
--- a/cc/subtle/CMakeLists.txt
+++ b/cc/subtle/CMakeLists.txt
@@ -478,6 +478,8 @@
   SRCS
     common_enums.cc
     common_enums.h
+  DEPS
+    absl::strings
 )
 
 tink_cc_library(
diff --git a/cc/subtle/common_enums.cc b/cc/subtle/common_enums.cc
index d3b2dd6..f2ff20e 100644
--- a/cc/subtle/common_enums.cc
+++ b/cc/subtle/common_enums.cc
@@ -18,6 +18,8 @@
 
 #include <string>
 
+#include "absl/strings/str_cat.h"
+
 namespace crypto {
 namespace tink {
 namespace subtle {
@@ -35,7 +37,7 @@
   case EllipticCurveType::UNKNOWN_CURVE:
     return "UNKNOWN_CURVE";
   default:
-    return "UNKNOWN_CURVE: " + std::to_string(type);
+    return absl::StrCat("UNKNOWN_CURVE: ", type);
   }
 }
 
@@ -50,7 +52,7 @@
   case EcPointFormat::UNKNOWN_FORMAT:
     return "UNKNOWN_FORMAT";
   default:
-    return "UNKNOWN_FORMAT: " + std::to_string(format);
+    return absl::StrCat("UNKNOWN_FORMAT: ", format);
   }
 }
 
@@ -67,7 +69,7 @@
   case HashType::UNKNOWN_HASH:
     return "UNKNOWN_HASH";
   default:
-    return "UNKNOWN_HASH: " + std::to_string(type);
+    return absl::StrCat("UNKNOWN_HASH: ", type);
   }
 }
 
diff --git a/cc/util/BUILD.bazel b/cc/util/BUILD.bazel
index ce472c2..ec0e1ab 100644
--- a/cc/util/BUILD.bazel
+++ b/cc/util/BUILD.bazel
@@ -2,7 +2,6 @@
 
 licenses(["notice"])
 
-
 cc_library(
     name = "buffer",
     srcs = ["buffer.cc"],
@@ -62,7 +61,8 @@
     visibility = ["//visibility:public"],
     deps = [
         "@com_google_absl//absl/base:core_headers",
-    ]
+        "@com_google_absl//absl/strings",
+    ],
 )
 
 cc_library(
diff --git a/cc/util/CMakeLists.txt b/cc/util/CMakeLists.txt
index abd44e4..de66de6 100644
--- a/cc/util/CMakeLists.txt
+++ b/cc/util/CMakeLists.txt
@@ -49,6 +49,7 @@
     status.h
   DEPS
     absl::base
+    absl::strings
   PUBLIC
 )
 
diff --git a/cc/util/status.cc b/cc/util/status.cc
index fd5d31e..a962449 100644
--- a/cc/util/status.cc
+++ b/cc/util/status.cc
@@ -17,6 +17,8 @@
 #include <sstream>
 
 #include "tink/util/status.h"
+
+#include "absl/strings/str_cat.h"
 // placeholder_google3_status_header, please ignore
 
 using ::std::ostream;
@@ -117,7 +119,7 @@
   }
   // Avoid using a "default" in the switch, so that the compiler can
   // give us a warning, but still provide a fallback here.
-  return std::to_string(error);
+  return absl::StrCat(error);
 }
 
 extern ostream& operator<<(ostream& os, crypto::tink::util::error::Code code) {