diff --git a/quiche/balsa/header_properties.cc b/quiche/balsa/header_properties.cc
index 5c08f6f..1022ed0 100644
--- a/quiche/balsa/header_properties.cc
+++ b/quiche/balsa/header_properties.cc
@@ -66,8 +66,7 @@
 }
 
 constexpr std::array<bool, 256> buildInvalidHeaderKeyCharLookupTable() {
-  std::array<bool, 256> invalidCharTable;
-  invalidCharTable.fill(false);
+  std::array<bool, 256> invalidCharTable{};
   for (uint8_t c : kInvalidHeaderKeyCharList) {
     invalidCharTable[c] = true;
   }
@@ -76,8 +75,7 @@
 
 constexpr std::array<bool, 256>
 buildInvalidHeaderKeyCharLookupTableAllowDoubleQuote() {
-  std::array<bool, 256> invalidCharTable;
-  invalidCharTable.fill(false);
+  std::array<bool, 256> invalidCharTable{};
   for (uint8_t c : kInvalidHeaderKeyCharListAllowDoubleQuote) {
     invalidCharTable[c] = true;
   }
@@ -85,17 +83,39 @@
 }
 
 constexpr std::array<bool, 256> buildInvalidCharLookupTable() {
-  std::array<bool, 256> invalidCharTable;
-  invalidCharTable.fill(false);
+  std::array<bool, 256> invalidCharTable{};
   for (uint8_t c : kInvalidHeaderCharList) {
     invalidCharTable[c] = true;
   }
   return invalidCharTable;
 }
 
+constexpr std::array<bool, 256> kAllTrueArray = {
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true, true, true, true, true, true, true, true, true,
+    true, true, true, true};
+
 constexpr std::array<bool, 256> buildInvalidPathCharLookupTable() {
-  std::array<bool, 256> invalidCharTable;
-  invalidCharTable.fill(true);
+  std::array<bool, 256> invalidCharTable = kAllTrueArray;
   for (uint8_t c : kValidPathCharList) {
     invalidCharTable[c] = false;
   }
@@ -103,8 +123,7 @@
 }
 
 constexpr std::array<bool, 256> buildInvalidQueryCharLookupTable() {
-  std::array<bool, 256> invalidCharTable;
-  invalidCharTable.fill(true);
+  std::array<bool, 256> invalidCharTable = kAllTrueArray;
   for (uint8_t c : kValidQueryCharList) {
     invalidCharTable[c] = false;
   }
