diff --git a/quic/core/crypto/certificate_view.cc b/quic/core/crypto/certificate_view.cc
index 3c4e49e..ba6430e 100644
--- a/quic/core/crypto/certificate_view.cc
+++ b/quic/core/crypto/certificate_view.cc
@@ -177,7 +177,7 @@
   }
   bool eof_reached = input->eof() && !pending_message;
   return PemReadResult{
-      .status = (eof_reached ? PemReadResult::kEof : PemReadResult::kError)};
+      (eof_reached ? PemReadResult::kEof : PemReadResult::kError), "", ""};
 }
 
 std::unique_ptr<CertificateView> CertificateView::ParseSingleCertificate(
diff --git a/quic/core/crypto/proof_source_x509.cc b/quic/core/crypto/proof_source_x509.cc
index 6afc65f..e432682 100644
--- a/quic/core/crypto/proof_source_x509.cc
+++ b/quic/core/crypto/proof_source_x509.cc
@@ -104,8 +104,8 @@
   }
 
   certificates_.push_front(Certificate{
-      .chain = chain,
-      .key = std::move(key),
+      chain,
+      std::move(key),
   });
   Certificate* certificate = &certificates_.front();
 
diff --git a/quic/core/quic_linux_socket_utils.cc b/quic/core/quic_linux_socket_utils.cc
index 5100a92..6dd74c3 100644
--- a/quic/core/quic_linux_socket_utils.cc
+++ b/quic/core/quic_linux_socket_utils.cc
@@ -186,7 +186,7 @@
     uint32_t flags;    /* flags defined by enum txtime_flags */
   };
 
-  LinuxSockTxTime so_txtime_val = {.clockid = clockid};
+  LinuxSockTxTime so_txtime_val{clockid, 0};
 
   if (setsockopt(fd, SOL_SOCKET, SO_TXTIME, &so_txtime_val,
                  sizeof(so_txtime_val)) != 0) {
diff --git a/quic/quic_transport/web_transport_fingerprint_proof_verifier_test.cc b/quic/quic_transport/web_transport_fingerprint_proof_verifier_test.cc
index 0432a76..f9f27e5 100644
--- a/quic/quic_transport/web_transport_fingerprint_proof_verifier_test.cc
+++ b/quic/quic_transport/web_transport_fingerprint_proof_verifier_test.cc
@@ -55,9 +55,9 @@
   }
 
   void AddTestCertificate() {
-    EXPECT_TRUE(verifier_->AddFingerprint(CertificateFingerprint{
-        .algorithm = CertificateFingerprint::kSha256,
-        .fingerprint = ComputeSha256Fingerprint(kTestCertificate)}));
+    EXPECT_TRUE(verifier_->AddFingerprint(
+        CertificateFingerprint{CertificateFingerprint::kSha256,
+                               ComputeSha256Fingerprint(kTestCertificate)}));
   }
 
   MockClock clock_;
@@ -137,9 +137,9 @@
 
 TEST_F(WebTransportFingerprintProofVerifierTest, InvalidCertificate) {
   constexpr quiche::QuicheStringPiece kInvalidCertificate = "Hello, world!";
-  ASSERT_TRUE(verifier_->AddFingerprint(CertificateFingerprint{
-      .algorithm = CertificateFingerprint::kSha256,
-      .fingerprint = ComputeSha256Fingerprint(kInvalidCertificate)}));
+  ASSERT_TRUE(verifier_->AddFingerprint(
+      {CertificateFingerprint::kSha256,
+       ComputeSha256Fingerprint(kInvalidCertificate)}));
 
   VerifyResult result = Verify(kInvalidCertificate);
   EXPECT_EQ(result.status, QUIC_FAILURE);
@@ -152,32 +152,30 @@
   // Accept all-uppercase fingerprints.
   verifier_ = std::make_unique<WebTransportFingerprintProofVerifier>(
       &clock_, /*max_validity_days=*/365);
-  EXPECT_TRUE(verifier_->AddFingerprint(CertificateFingerprint{
-      .algorithm = CertificateFingerprint::kSha256,
-      .fingerprint = "F2:E5:46:5E:2B:F7:EC:D6:F6:30:66:A5:A3:75:11:73:4A:A0:EB:"
-                     "7C:47:01:0E:86:D6:75:8E:D4:F4:FA:1B:0F"}));
+  EXPECT_TRUE(verifier_->AddFingerprint(
+      {CertificateFingerprint::kSha256,
+       "F2:E5:46:5E:2B:F7:EC:D6:F6:30:66:A5:A3:75:11:73:4A:A0:EB:"
+       "7C:47:01:0E:86:D6:75:8E:D4:F4:FA:1B:0F"}));
   EXPECT_EQ(Verify(kTestCertificate).detailed_status,
             WebTransportFingerprintProofVerifier::Status::kValidCertificate);
 
   // Reject unknown hash algorithms.
-  EXPECT_FALSE(verifier_->AddFingerprint(CertificateFingerprint{
-      .algorithm = "sha-1",
-      .fingerprint =
-          "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"}));
+  EXPECT_FALSE(verifier_->AddFingerprint(
+      {"sha-1",
+       "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"}));
   // Reject invalid length.
   EXPECT_FALSE(verifier_->AddFingerprint(
-      CertificateFingerprint{.algorithm = CertificateFingerprint::kSha256,
-                             .fingerprint = "00:00:00:00"}));
+      {CertificateFingerprint::kSha256, "00:00:00:00"}));
   // Reject missing colons.
-  EXPECT_FALSE(verifier_->AddFingerprint(CertificateFingerprint{
-      .algorithm = CertificateFingerprint::kSha256,
-      .fingerprint = "00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00."
-                     "00.00.00.00.00.00.00.00.00.00.00.00.00"}));
+  EXPECT_FALSE(verifier_->AddFingerprint(
+      {CertificateFingerprint::kSha256,
+       "00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00."
+       "00.00.00.00.00.00.00.00.00.00.00.00.00"}));
   // Reject non-hex symbols.
-  EXPECT_FALSE(verifier_->AddFingerprint(CertificateFingerprint{
-      .algorithm = CertificateFingerprint::kSha256,
-      .fingerprint = "zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:"
-                     "zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz"}));
+  EXPECT_FALSE(verifier_->AddFingerprint(
+      {CertificateFingerprint::kSha256,
+       "zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:"
+       "zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz"}));
 }
 
 }  // namespace
