Add compiler pragma for enum_values specialization

`inline variable` requires C++17 which is not available for some
targets.

Test: atest --host aidl_unittests
      atest CtsNdkBinderTestCases
Bug: 146402634
Change-Id: Ie2d7e56bb2178d1b79cc1af5bcc73ea8a424a375
diff --git a/aidl_to_cpp_common.cpp b/aidl_to_cpp_common.cpp
index 7c56611..d1aeb2e 100644
--- a/aidl_to_cpp_common.cpp
+++ b/aidl_to_cpp_common.cpp
@@ -363,6 +363,8 @@
       "::" + enum_decl.GetName();
   const auto size = enum_decl.GetEnumerators().size();
   std::ostringstream code;
+  code << "#pragma clang diagnostic push\n";
+  code << "#pragma clang diagnostic ignored \"-Wc++17-extensions\"\n";
   code << "template <>\n";
   code << "constexpr inline std::array<" << fq_name << ", " << size << "> enum_values<" << fq_name
        << "> = {\n";
@@ -370,6 +372,7 @@
     code << "  " << fq_name << "::" << enumerator->GetName() << ",\n";
   }
   code << "};\n";
+  code << "#pragma clang diagnostic pop\n";
   return code.str();
 }
 
diff --git a/generate_cpp_unittest.cpp b/generate_cpp_unittest.cpp
index 0ecb30d..eb8ede0 100644
--- a/generate_cpp_unittest.cpp
+++ b/generate_cpp_unittest.cpp
@@ -1453,6 +1453,8 @@
 
 namespace internal {
 
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc++17-extensions"
 template <>
 constexpr inline std::array<::android::os::TestEnum, 10> enum_values<::android::os::TestEnum> = {
   ::android::os::TestEnum::ZERO,
@@ -1466,6 +1468,7 @@
   ::android::os::TestEnum::NINE,
   ::android::os::TestEnum::TEN,
 };
+#pragma clang diagnostic pop
 
 }  // namespace internal
 
@@ -1519,11 +1522,14 @@
 
 namespace internal {
 
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc++17-extensions"
 template <>
 constexpr inline std::array<::android::os::TestEnum, 2> enum_values<::android::os::TestEnum> = {
   ::android::os::TestEnum::FOO,
   ::android::os::TestEnum::BAR,
 };
+#pragma clang diagnostic pop
 
 }  // namespace internal