diff --git a/quic/core/qpack/qpack_header_table.cc b/quic/core/qpack/qpack_header_table.cc
index e39babf..6607272 100644
--- a/quic/core/qpack/qpack_header_table.cc
+++ b/quic/core/qpack/qpack_header_table.cc
@@ -10,128 +10,6 @@
 
 namespace quic {
 
-// Explicitly instantiate all possible templated non-inline base class methods.
-
-template QpackHeaderTableBase<QpackEncoderDynamicTable>::QpackHeaderTableBase();
-template bool
-QpackHeaderTableBase<QpackEncoderDynamicTable>::EntryFitsDynamicTableCapacity(
-    absl::string_view name,
-    absl::string_view value) const;
-template uint64_t QpackHeaderTableBase<QpackEncoderDynamicTable>::InsertEntry(
-    absl::string_view name,
-    absl::string_view value);
-template bool QpackHeaderTableBase<
-    QpackEncoderDynamicTable>::SetDynamicTableCapacity(uint64_t capacity);
-template bool
-QpackHeaderTableBase<QpackEncoderDynamicTable>::SetMaximumDynamicTableCapacity(
-    uint64_t maximum_dynamic_table_capacity);
-template void
-QpackHeaderTableBase<QpackEncoderDynamicTable>::RemoveEntryFromEnd();
-template void QpackHeaderTableBase<
-    QpackEncoderDynamicTable>::EvictDownToCapacity(uint64_t capacity);
-
-template QpackHeaderTableBase<QpackDecoderDynamicTable>::QpackHeaderTableBase();
-template bool
-QpackHeaderTableBase<QpackDecoderDynamicTable>::EntryFitsDynamicTableCapacity(
-    absl::string_view name,
-    absl::string_view value) const;
-template uint64_t QpackHeaderTableBase<QpackDecoderDynamicTable>::InsertEntry(
-    absl::string_view name,
-    absl::string_view value);
-template bool QpackHeaderTableBase<
-    QpackDecoderDynamicTable>::SetDynamicTableCapacity(uint64_t capacity);
-template bool
-QpackHeaderTableBase<QpackDecoderDynamicTable>::SetMaximumDynamicTableCapacity(
-    uint64_t maximum_dynamic_table_capacity);
-template void
-QpackHeaderTableBase<QpackDecoderDynamicTable>::RemoveEntryFromEnd();
-template void QpackHeaderTableBase<
-    QpackDecoderDynamicTable>::EvictDownToCapacity(uint64_t capacity);
-
-template <typename DynamicEntryTable>
-QpackHeaderTableBase<DynamicEntryTable>::QpackHeaderTableBase()
-    : dynamic_table_size_(0),
-      dynamic_table_capacity_(0),
-      maximum_dynamic_table_capacity_(0),
-      max_entries_(0),
-      dropped_entry_count_(0),
-      dynamic_table_entry_referenced_(false) {}
-
-template <typename DynamicEntryTable>
-bool QpackHeaderTableBase<DynamicEntryTable>::EntryFitsDynamicTableCapacity(
-    absl::string_view name,
-    absl::string_view value) const {
-  return QpackEntry::Size(name, value) <= dynamic_table_capacity_;
-}
-
-template <typename DynamicEntryTable>
-uint64_t QpackHeaderTableBase<DynamicEntryTable>::InsertEntry(
-    absl::string_view name,
-    absl::string_view value) {
-  QUICHE_DCHECK(EntryFitsDynamicTableCapacity(name, value));
-
-  const uint64_t index = dropped_entry_count_ + dynamic_entries_.size();
-
-  // Copy name and value before modifying the container, because evicting
-  // entries or even inserting a new one might invalidate |name| or |value| if
-  // they point to an entry.
-  QpackEntry new_entry((std::string(name)), (std::string(value)));
-  const size_t entry_size = new_entry.Size();
-
-  EvictDownToCapacity(dynamic_table_capacity_ - entry_size);
-
-  dynamic_table_size_ += entry_size;
-  dynamic_entries_.push_back(std::move(new_entry));
-
-  return index;
-}
-
-template <typename DynamicEntryTable>
-bool QpackHeaderTableBase<DynamicEntryTable>::SetDynamicTableCapacity(
-    uint64_t capacity) {
-  if (capacity > maximum_dynamic_table_capacity_) {
-    return false;
-  }
-
-  dynamic_table_capacity_ = capacity;
-  EvictDownToCapacity(capacity);
-
-  QUICHE_DCHECK_LE(dynamic_table_size_, dynamic_table_capacity_);
-
-  return true;
-}
-
-template <typename DynamicEntryTable>
-bool QpackHeaderTableBase<DynamicEntryTable>::SetMaximumDynamicTableCapacity(
-    uint64_t maximum_dynamic_table_capacity) {
-  if (maximum_dynamic_table_capacity_ == 0) {
-    maximum_dynamic_table_capacity_ = maximum_dynamic_table_capacity;
-    max_entries_ = maximum_dynamic_table_capacity / 32;
-    return true;
-  }
-  // If the value is already set, it should not be changed.
-  return maximum_dynamic_table_capacity == maximum_dynamic_table_capacity_;
-}
-
-template <typename DynamicEntryTable>
-void QpackHeaderTableBase<DynamicEntryTable>::RemoveEntryFromEnd() {
-  const uint64_t entry_size = dynamic_entries_.front().Size();
-  QUICHE_DCHECK_GE(dynamic_table_size_, entry_size);
-  dynamic_table_size_ -= entry_size;
-
-  dynamic_entries_.pop_front();
-  ++dropped_entry_count_;
-}
-
-template <typename DynamicEntryTable>
-void QpackHeaderTableBase<DynamicEntryTable>::EvictDownToCapacity(
-    uint64_t capacity) {
-  while (dynamic_table_size_ > capacity) {
-    QUICHE_DCHECK(!dynamic_entries_.empty());
-    RemoveEntryFromEnd();
-  }
-}
-
 QpackEncoderHeaderTable::QpackEncoderHeaderTable()
     : static_index_(ObtainQpackStaticTable().GetStaticIndex()),
       static_name_index_(ObtainQpackStaticTable().GetStaticNameIndex()) {}
diff --git a/quic/core/qpack/qpack_header_table.h b/quic/core/qpack/qpack_header_table.h
index 5ca3b11..7193d10 100644
--- a/quic/core/qpack/qpack_header_table.h
+++ b/quic/core/qpack/qpack_header_table.h
@@ -138,6 +138,90 @@
   bool dynamic_table_entry_referenced_;
 };
 
+template <typename DynamicEntryTable>
+QpackHeaderTableBase<DynamicEntryTable>::QpackHeaderTableBase()
+    : dynamic_table_size_(0),
+      dynamic_table_capacity_(0),
+      maximum_dynamic_table_capacity_(0),
+      max_entries_(0),
+      dropped_entry_count_(0),
+      dynamic_table_entry_referenced_(false) {}
+
+template <typename DynamicEntryTable>
+bool QpackHeaderTableBase<DynamicEntryTable>::EntryFitsDynamicTableCapacity(
+    absl::string_view name,
+    absl::string_view value) const {
+  return QpackEntry::Size(name, value) <= dynamic_table_capacity_;
+}
+
+template <typename DynamicEntryTable>
+uint64_t QpackHeaderTableBase<DynamicEntryTable>::InsertEntry(
+    absl::string_view name,
+    absl::string_view value) {
+  QUICHE_DCHECK(EntryFitsDynamicTableCapacity(name, value));
+
+  const uint64_t index = dropped_entry_count_ + dynamic_entries_.size();
+
+  // Copy name and value before modifying the container, because evicting
+  // entries or even inserting a new one might invalidate |name| or |value| if
+  // they point to an entry.
+  QpackEntry new_entry((std::string(name)), (std::string(value)));
+  const size_t entry_size = new_entry.Size();
+
+  EvictDownToCapacity(dynamic_table_capacity_ - entry_size);
+
+  dynamic_table_size_ += entry_size;
+  dynamic_entries_.push_back(std::move(new_entry));
+
+  return index;
+}
+
+template <typename DynamicEntryTable>
+bool QpackHeaderTableBase<DynamicEntryTable>::SetDynamicTableCapacity(
+    uint64_t capacity) {
+  if (capacity > maximum_dynamic_table_capacity_) {
+    return false;
+  }
+
+  dynamic_table_capacity_ = capacity;
+  EvictDownToCapacity(capacity);
+
+  QUICHE_DCHECK_LE(dynamic_table_size_, dynamic_table_capacity_);
+
+  return true;
+}
+
+template <typename DynamicEntryTable>
+bool QpackHeaderTableBase<DynamicEntryTable>::SetMaximumDynamicTableCapacity(
+    uint64_t maximum_dynamic_table_capacity) {
+  if (maximum_dynamic_table_capacity_ == 0) {
+    maximum_dynamic_table_capacity_ = maximum_dynamic_table_capacity;
+    max_entries_ = maximum_dynamic_table_capacity / 32;
+    return true;
+  }
+  // If the value is already set, it should not be changed.
+  return maximum_dynamic_table_capacity == maximum_dynamic_table_capacity_;
+}
+
+template <typename DynamicEntryTable>
+void QpackHeaderTableBase<DynamicEntryTable>::RemoveEntryFromEnd() {
+  const uint64_t entry_size = dynamic_entries_.front().Size();
+  QUICHE_DCHECK_GE(dynamic_table_size_, entry_size);
+  dynamic_table_size_ -= entry_size;
+
+  dynamic_entries_.pop_front();
+  ++dropped_entry_count_;
+}
+
+template <typename DynamicEntryTable>
+void QpackHeaderTableBase<DynamicEntryTable>::EvictDownToCapacity(
+    uint64_t capacity) {
+  while (dynamic_table_size_ > capacity) {
+    QUICHE_DCHECK(!dynamic_entries_.empty());
+    RemoveEntryFromEnd();
+  }
+}
+
 class QUIC_EXPORT_PRIVATE QpackEncoderHeaderTable
     : public QpackHeaderTableBase<QpackEncoderDynamicTable> {
  public:
