diff --git a/include/mrdocs/Metadata/Symbol/Function.hpp b/include/mrdocs/Metadata/Symbol/Function.hpp
index b3786a9f5c..1a2adbab11 100644
--- a/include/mrdocs/Metadata/Symbol/Function.hpp
+++ b/include/mrdocs/Metadata/Symbol/Function.hpp
@@ -22,6 +22,7 @@
#include
#include
#include
+#include
#include
#include
@@ -137,6 +138,36 @@ struct FunctionSymbol final
*/
Optional FunctionObjectImpl;
+ /** Whether this function is listed on its primary's page.
+
+ A presentation-layer flag set by `SpecializationFinalizer`
+ when *both* conditions hold:
+
+ 1. This function is a template specialization (AST-local,
+ equivalent to `Template->specializationKind() != Primary`).
+ 2. Its primary is being extracted in
+ @ref ExtractionMode::Regular (cross-symbol, needs the
+ corpus).
+
+ When set, the function is rendered in its primary's
+ "Specializations" section and suppressed from the parent
+ scope's listing. Orphan specializations (primary excluded
+ from extraction) fail condition 2 and keep the flag `false`,
+ so they remain reachable from the parent scope. The name
+ deliberately encodes the resulting placement rather than
+ the AST property in 1, which `Template` already exposes.
+ */
+ bool IsListedOnPrimary = false;
+
+ /** Specializations whose primary is this function.
+
+ Populated by `SpecializationFinalizer` with the IDs of
+ function-template specializations referring to this
+ function as their primary. Sorted by referent name
+ then ID.
+ */
+ std::vector Specializations;
+
//--------------------------------------------
/** Construct a function symbol with its ID.
@@ -161,7 +192,8 @@ MRDOCS_DESCRIBE_STRUCT(
IsNodiscard, IsExplicitObjectMemberFunction, Constexpr,
OverloadedOperator, StorageClass, IsRecordMethod, IsVirtual,
IsVirtualAsWritten, IsPure, IsConst, IsVolatile, IsFinal,
- RefQualifier, Explicit, Attributes, FunctionObjectImpl)
+ RefQualifier, Explicit, Attributes, FunctionObjectImpl,
+ IsListedOnPrimary, Specializations)
)
/** Map a vector of parameters to a @ref dom::Value object.
diff --git a/include/mrdocs/Metadata/Symbol/Record.hpp b/include/mrdocs/Metadata/Symbol/Record.hpp
index c173fd7407..598444cefa 100644
--- a/include/mrdocs/Metadata/Symbol/Record.hpp
+++ b/include/mrdocs/Metadata/Symbol/Record.hpp
@@ -5,6 +5,7 @@
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
// Copyright (c) 2023 Vinnie Falco (vinnie.falco@gmail.com)
+// Copyright (c) 2026 Gennaro Prota (gennaro.prota@gmail.com)
//
// Official repository: https://github.com/cppalliance/mrdocs
//
@@ -74,6 +75,43 @@ struct RecordSymbol final
*/
std::vector Friends;
+ /** Whether this record is listed on its primary's page.
+
+ A presentation-layer flag set by `SpecializationFinalizer`
+ when *both* conditions hold:
+
+ 1. This record is a template specialization (AST-local,
+ equivalent to `Template->specializationKind() != Primary`).
+ 2. Its primary is being extracted in
+ @ref ExtractionMode::Regular (cross-symbol, needs the
+ corpus).
+
+ When set, the record is rendered in its primary's
+ "Specializations" section and suppressed from the parent
+ scope's listing. Orphan specializations (primary excluded
+ from extraction) fail condition 2 and keep the flag `false`,
+ so they remain reachable from the parent scope. The name
+ deliberately encodes the resulting placement rather than
+ the AST property in 1, which `Template` already exposes.
+ */
+ bool IsListedOnPrimary = false;
+
+ /** Specializations whose primary is this record.
+
+ Populated by `SpecializationFinalizer` with the IDs of
+ class-template specializations referring to this record
+ as their primary. Sorted by referent name then ID.
+ */
+ std::vector Specializations;
+
+ /** Deduction guides associated with this class template.
+
+ Populated by `SpecializationFinalizer` with the IDs of
+ deduction guides that deduce this record. Sorted by
+ referent name then ID.
+ */
+ std::vector DeductionGuides;
+
//--------------------------------------------
/** Create a record symbol bound to an ID.
@@ -93,7 +131,8 @@ MRDOCS_DESCRIBE_STRUCT(
RecordSymbol,
(SymbolCommonBase),
(KeyKind, Template, IsTypeDef, IsFinal, IsFinalDestructor,
- Bases, Derived, Interface, Friends)
+ Bases, Derived, Interface, Friends,
+ IsListedOnPrimary, Specializations, DeductionGuides)
)
/** Return the default accessibility for a record key kind.
diff --git a/mrdocs.rnc b/mrdocs.rnc
index 776acb447b..cd1f9e08c3 100644
--- a/mrdocs.rnc
+++ b/mrdocs.rnc
@@ -370,7 +370,10 @@ grammar
BaseInfo*,
element derived { SymbolID }*,
RecordInterface?,
- FriendInfo*
+ FriendInfo*,
+ element is-listed-on-primary { Bool }?,
+ element specializations { SymbolID }*,
+ element deduction-guides { SymbolID }*
}
BaseInfo =
@@ -445,7 +448,9 @@ grammar
element ref-qualifier { text }?,
element explicit { text }?,
element attributes { text }*,
- element function-object-impl { SymbolID }?
+ element function-object-impl { SymbolID }?,
+ element is-listed-on-primary { Bool }?,
+ element specializations { SymbolID }*
}
#---------------------------------------------
diff --git a/share/mrdocs/addons/generator/common/partials/symbol.hbs b/share/mrdocs/addons/generator/common/partials/symbol.hbs
index 5bbf6426a3..e42b42806f 100644
--- a/share/mrdocs/addons/generator/common/partials/symbol.hbs
+++ b/share/mrdocs/addons/generator/common/partials/symbol.hbs
@@ -20,6 +20,8 @@
{{> symbol/section/base-classes}}
{{> symbol/section/protected-base-classes}}
{{> symbol/section/members}}
+{{> symbol/section/specializations}}
+{{> symbol/section/deduction-guides}}
{{> symbol/section/friends}}
{{> symbol/section/using-directives}}
{{> symbol/section/non-member-functions}}
diff --git a/share/mrdocs/addons/generator/common/partials/symbol/section/deduction-guides.hbs b/share/mrdocs/addons/generator/common/partials/symbol/section/deduction-guides.hbs
new file mode 100644
index 0000000000..d7fc414b7c
--- /dev/null
+++ b/share/mrdocs/addons/generator/common/partials/symbol/section/deduction-guides.hbs
@@ -0,0 +1,4 @@
+{{! Deduction guides for this class template, listed on its own page rather than the parent scope. }}
+{{#if symbol.deductionGuides}}
+{{>symbol/members-table members=symbol.deductionGuides title="Deduction Guides"}}
+{{/if}}
diff --git a/share/mrdocs/addons/generator/common/partials/symbol/section/specializations.hbs b/share/mrdocs/addons/generator/common/partials/symbol/section/specializations.hbs
new file mode 100644
index 0000000000..d9b1b85c7c
--- /dev/null
+++ b/share/mrdocs/addons/generator/common/partials/symbol/section/specializations.hbs
@@ -0,0 +1,4 @@
+{{! Specializations of this primary, listed on its own page rather than the parent scope. }}
+{{#if symbol.specializations}}
+{{>symbol/members-table members=symbol.specializations title="Specializations"}}
+{{/if}}
diff --git a/share/mrdocs/addons/generator/common/partials/symbol/tranche.hbs b/share/mrdocs/addons/generator/common/partials/symbol/tranche.hbs
index ae7c2b3a65..6536ebf5f7 100644
--- a/share/mrdocs/addons/generator/common/partials/symbol/tranche.hbs
+++ b/share/mrdocs/addons/generator/common/partials/symbol/tranche.hbs
@@ -7,6 +7,10 @@
Each value in the tranche is a list of symbols that belong to the tranche.
+ Template specializations and deduction guides are filtered out: they are
+ listed instead on the primary template's own page, via the dedicated
+ "Specializations" / "Deduction Guides" sections.
+
Expected Context: {Tranche Object}
Example:
@@ -17,23 +21,22 @@
{{#if is-namespace}}
{{>symbol/members-table members=tranche.namespaces title="Namespaces"}}
{{>symbol/members-table members=tranche.namespaceAliases title="Namespace Aliases"}}
-{{>symbol/members-table members=tranche.records title=(concat (select label (concat label " ") "") "Types")}}
+{{>symbol/members-table members=(reject_by tranche.records "isListedOnPrimary") title=(concat (select label (concat label " ") "") "Types")}}
{{>symbol/members-table members=tranche.typedefs title=(concat (select label (concat label " ") "") "Type Aliases")}}
{{>symbol/members-table members=tranche.enums title=(concat (select label (concat label " ") "") "Enums")}}
-{{>symbol/members-table members=tranche.functions title="Functions"}}
+{{>symbol/members-table members=(reject_by tranche.functions "isListedOnPrimary") title="Functions"}}
{{>symbol/members-table members=tranche.variables title="Variables"}}
{{>symbol/members-table members=tranche.concepts title="Concepts"}}
-{{>symbol/members-table members=tranche.guides title=(concat (select label (concat label " ") "") "Deduction Guides")}}
{{>symbol/members-table members=tranche.usings title=(concat (select label (concat label " ") "") "Using Declarations")}}
{{else}}
{{>symbol/members-table members=tranche.namespaceAliases title="Namespace Aliases"}}
-{{>symbol/members-table members=tranche.records title=(concat (select label (concat label " ") "") "Types")}}
+{{>symbol/members-table members=(reject_by tranche.records "isListedOnPrimary") title=(concat (select label (concat label " ") "") "Types")}}
{{>symbol/members-table members=tranche.typedefs title=(concat (select label (concat label " ") "") "Type Aliases")}}
{{>symbol/members-table members=tranche.enums title=(concat (select label (concat label " ") "") "Enums")}}
-{{>symbol/members-table members=tranche.functions title=(concat (select label (concat label " ") "") "Member Functions")}}
-{{>symbol/members-table members=tranche.staticFunctions title=(concat (select label (concat label " ") "") "Static Member Functions")}}
+{{>symbol/members-table members=(reject_by tranche.functions "isListedOnPrimary") title=(concat (select label (concat label " ") "") "Member Functions")}}
+{{>symbol/members-table members=(reject_by tranche.staticFunctions "isListedOnPrimary") title=(concat (select label (concat label " ") "") "Static Member Functions")}}
{{>symbol/members-table members=tranche.variables title=(concat (select label (concat label " ") "") "Data Members")}}
{{>symbol/members-table members=tranche.staticVariables title=(concat (select label (concat label " ") "") "Static Data Members")}}
{{>symbol/members-table members=tranche.aliases title=(concat (select label (concat label " ") "") "Aliases")}}
{{>symbol/members-table members=tranche.usings title=(concat (select label (concat label " ") "") "Using Declarations")}}
-{{/if}}
\ No newline at end of file
+{{/if}}
diff --git a/src/lib/CorpusImpl.cpp b/src/lib/CorpusImpl.cpp
index 5877df7a6d..7ca0e49518 100644
--- a/src/lib/CorpusImpl.cpp
+++ b/src/lib/CorpusImpl.cpp
@@ -16,6 +16,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -1086,6 +1087,14 @@ CorpusImpl::finalize()
finalizer.build();
}
+ // Populate primary -> specialization back-pointers
+ // and the deduction-guide lists on deduced records.
+ {
+ report::debug(" - Finalizing specializations");
+ SpecializationFinalizer finalizer(*this);
+ finalizer.build();
+ }
+
// Sort members: this runs unconditionally because
// the members of some symbol types are always sorted.
{
diff --git a/src/lib/CorpusImpl.hpp b/src/lib/CorpusImpl.hpp
index 567ef38ed0..9103665fc2 100644
--- a/src/lib/CorpusImpl.hpp
+++ b/src/lib/CorpusImpl.hpp
@@ -64,6 +64,7 @@ class CorpusImpl final : public Corpus
friend class NamespacesFinalizer;
friend class DerivedFinalizer;
friend class FunctionObjectFinalizer;
+ friend class SpecializationFinalizer;
public:
/** Constructor.
diff --git a/src/lib/Metadata/Finalizers/SpecializationFinalizer.cpp b/src/lib/Metadata/Finalizers/SpecializationFinalizer.cpp
new file mode 100644
index 0000000000..89b7478b02
--- /dev/null
+++ b/src/lib/Metadata/Finalizers/SpecializationFinalizer.cpp
@@ -0,0 +1,171 @@
+//
+// Licensed under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+// Copyright (c) 2026 Gennaro Prota (gennaro.prota@gmail.com)
+//
+// Official repository: https://github.com/cppalliance/mrdocs
+//
+
+#include "SpecializationFinalizer.hpp"
+#include
+#include
+#include
+
+namespace mrdocs {
+
+namespace {
+
+// Return the `SymbolID` of the primary class template that a
+// deduction guide deduces, or `SymbolID::invalid` when it
+// cannot be determined.
+SymbolID
+deducedPrimaryID(GuideSymbol const& guide)
+{
+ if (guide.Deduced.valueless_after_move()
+ || !guide.Deduced->isNamed())
+ {
+ return SymbolID::invalid;
+ }
+ NamedType const& namedType = guide.Deduced->asNamed();
+ if (namedType.Name.valueless_after_move())
+ {
+ return SymbolID::invalid;
+ }
+ return namedType.Name->id;
+}
+
+} // (unnamed)
+
+void
+SpecializationFinalizer::
+processRecord(RecordSymbol const& I)
+{
+ if (!I.Template
+ || I.Template->specializationKind() == TemplateSpecKind::Primary)
+ {
+ return;
+ }
+ Symbol* primary = corpus_.find(I.Template->Primary);
+ if (!primary
+ || primary->Extraction != ExtractionMode::Regular
+ || !primary->isRecord())
+ {
+ return;
+ }
+ primary->asRecordPtr()->Specializations.push_back(I.id);
+ Symbol* self = corpus_.find(I.id);
+ MRDOCS_ASSERT(self && self->isRecord());
+ self->asRecordPtr()->IsListedOnPrimary = true;
+}
+
+void
+SpecializationFinalizer::
+processFunction(FunctionSymbol const& I)
+{
+ if (!I.Template
+ || I.Template->specializationKind() == TemplateSpecKind::Primary)
+ {
+ return;
+ }
+ Symbol* primary = corpus_.find(I.Template->Primary);
+ if (!primary
+ || primary->Extraction != ExtractionMode::Regular
+ || !primary->isFunction())
+ {
+ return;
+ }
+ primary->asFunctionPtr()->Specializations.push_back(I.id);
+ Symbol* self = corpus_.find(I.id);
+ MRDOCS_ASSERT(self && self->isFunction());
+ self->asFunctionPtr()->IsListedOnPrimary = true;
+}
+
+void
+SpecializationFinalizer::
+processGuide(GuideSymbol const& I)
+{
+ SymbolID const deducedId = deducedPrimaryID(I);
+ if (!deducedId)
+ {
+ return;
+ }
+ Symbol* deduced = corpus_.find(deducedId);
+ if (!deduced
+ || deduced->Extraction != ExtractionMode::Regular
+ || !deduced->isRecord())
+ {
+ return;
+ }
+ deduced->asRecordPtr()->DeductionGuides.push_back(I.id);
+}
+
+void
+SpecializationFinalizer::
+sortBackPointers()
+{
+ auto byReferentName = [this](SymbolID const& lhs, SymbolID const& rhs)
+ {
+ Symbol const* lhsInfo = corpus_.find(lhs);
+ Symbol const* rhsInfo = corpus_.find(rhs);
+ if (!lhsInfo || !rhsInfo)
+ {
+ return lhs < rhs;
+ }
+ if (lhsInfo->Name != rhsInfo->Name)
+ {
+ return lhsInfo->Name < rhsInfo->Name;
+ }
+ return lhs < rhs;
+ };
+ for (Symbol const& I : corpus_)
+ {
+ if (I.isRecord())
+ {
+ RecordSymbol const& R = I.asRecord();
+ if (!R.Specializations.empty() || !R.DeductionGuides.empty())
+ {
+ RecordSymbol* mut = corpus_.find(I.id)->asRecordPtr();
+ std::ranges::sort(mut->Specializations, byReferentName);
+ std::ranges::sort(mut->DeductionGuides, byReferentName);
+ }
+ }
+ else if (I.isFunction())
+ {
+ FunctionSymbol const& F = I.asFunction();
+ if (!F.Specializations.empty())
+ {
+ FunctionSymbol* mut = corpus_.find(I.id)->asFunctionPtr();
+ std::ranges::sort(mut->Specializations, byReferentName);
+ }
+ }
+ }
+}
+
+void
+SpecializationFinalizer::
+build()
+{
+ for (Symbol const& I : corpus_)
+ {
+ if (I.Extraction == ExtractionMode::Regular)
+ {
+ if (I.isRecord())
+ {
+ processRecord(I.asRecord());
+ }
+ else if (I.isFunction())
+ {
+ processFunction(I.asFunction());
+ }
+ else if (I.isGuide())
+ {
+ processGuide(I.asGuide());
+ }
+ }
+ }
+ sortBackPointers();
+}
+
+} // mrdocs
diff --git a/src/lib/Metadata/Finalizers/SpecializationFinalizer.hpp b/src/lib/Metadata/Finalizers/SpecializationFinalizer.hpp
new file mode 100644
index 0000000000..a7638e0b4e
--- /dev/null
+++ b/src/lib/Metadata/Finalizers/SpecializationFinalizer.hpp
@@ -0,0 +1,68 @@
+//
+// Licensed under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+// Copyright (c) 2026 Gennaro Prota (gennaro.prota@gmail.com)
+//
+// Official repository: https://github.com/cppalliance/mrdocs
+//
+
+#ifndef MRDOCS_LIB_METADATA_FINALIZERS_SPECIALIZATIONFINALIZER_HPP
+#define MRDOCS_LIB_METADATA_FINALIZERS_SPECIALIZATIONFINALIZER_HPP
+
+#include
+
+namespace mrdocs {
+
+/** Populate the back-pointers from primaries to their specializations.
+
+ For each class- or function-template specialization extracted
+ in @ref ExtractionMode::Regular whose primary is also `Regular`,
+ appends the specialization's ID to the primary's
+ `Specializations` list and sets the specialization's
+ `IsListedOnPrimary` flag. For each `Regular` deduction guide,
+ appends its ID to the deduced record's `DeductionGuides`
+ list. The populated lists are sorted by referent name then ID.
+
+ Orphan specializations - those whose primary is not extracted
+ in `Regular` mode - keep `IsListedOnPrimary` `false` so they
+ remain reachable from the parent scope's listing.
+*/
+class SpecializationFinalizer
+{
+ CorpusImpl& corpus_;
+
+ void processRecord(RecordSymbol const& I);
+ void processFunction(FunctionSymbol const& I);
+ void processGuide(GuideSymbol const& I);
+
+ void sortBackPointers();
+
+public:
+ /** Construct the finalizer bound to a corpus.
+
+ @param corpus The corpus whose specialization and deduction-guide
+ back-pointers will be populated by `build`.
+ */
+ explicit
+ SpecializationFinalizer(CorpusImpl& corpus) noexcept
+ : corpus_(corpus)
+ {
+ }
+
+ /** Populate the back-pointers and sort them.
+
+ Walks the corpus once, appending each `Regular` specialization
+ to its primary's `Specializations` list (when the primary is
+ also regular) and each `Regular` deduction guide to its deduced
+ record's `DeductionGuides` list. Specializations whose primary
+ will be rendered also get their `IsListedOnPrimary` flag set.
+ Finally sorts every populated vector by referent name then ID.
+ */
+ void build();
+};
+
+} // mrdocs
+
+#endif // MRDOCS_LIB_METADATA_FINALIZERS_SPECIALIZATIONFINALIZER_HPP
diff --git a/src/lib/Support/Handlebars.cpp b/src/lib/Support/Handlebars.cpp
index 417e6038c5..a9176adadb 100644
--- a/src/lib/Support/Handlebars.cpp
+++ b/src/lib/Support/Handlebars.cpp
@@ -4,6 +4,7 @@
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
// Copyright (c) 2023 Alan de Freitas (alandefreitas@gmail.com)
+// Copyright (c) 2026 Gennaro Prota (gennaro.prota@gmail.com)
//
// Official repository: https://github.com/cppalliance/mrdocs
//
@@ -6473,6 +6474,60 @@ registerContainerHelpers(Handlebars& hbs)
hbs.registerHelper("filter_by", filter_by_fn);
+ static auto reject_by_fn = dom::makeVariadicInvocable([](
+ dom::Array const& arguments) -> dom::Value
+ {
+ dom::Value container = arguments.at(0);
+ std::vector keys;
+ for (std::size_t i = 1; i < arguments.size() - 1; ++i)
+ {
+ dom::Value key = arguments.at(i);
+ keys.push_back(key);
+ }
+
+ // Given an array of objects, reject (exclude) those whose
+ // value at any of the given keys is truthy. Inverse of
+ // `filter_by`: non-object elements are kept, since they
+ // have no keys to test.
+ if (container.isArray())
+ {
+ dom::Array const& arr = container.getArray();
+
+ std::vector res;
+ std::size_t const n = arr.size();
+ for (std::size_t i = 0; i < n; ++i) {
+ dom::Value el = arr.at(i);
+
+ if (!el.isObject())
+ {
+ res.emplace_back(el);
+ continue;
+ }
+
+ auto const matchIt = std::ranges::find_if(
+ keys,
+ [&](dom::Value const& key)
+ {
+ return
+ el.getObject().exists(key.getString()) &&
+ el.getObject().get(key.getString()).isTruthy();
+ });
+ if (matchIt != keys.end())
+ {
+ continue;
+ }
+
+ res.emplace_back(el);
+ }
+ return dom::Array(res);
+ }
+
+ // If the value is not an array, then we can't reject from it
+ return container;
+ });
+
+ hbs.registerHelper("reject_by", reject_by_fn);
+
static auto any_of_by_fn = dom::makeVariadicInvocable([](
dom::Array const& arguments) -> dom::Value
{
diff --git a/test-files/golden-tests/config/extract-friends/extract-friends.xml b/test-files/golden-tests/config/extract-friends/extract-friends.xml
index d10d24ae21..db3644351b 100644
--- a/test-files/golden-tests/config/extract-friends/extract-friends.xml
+++ b/test-files/golden-tests/config/extract-friends/extract-friends.xml
@@ -67,6 +67,7 @@
+ jTCZUvygQOxo6L+VfFZcAI6KU0Y=
hash
@@ -105,6 +106,7 @@
+ 1
operator()
diff --git a/test-files/golden-tests/config/extract-friends/no-extract-friends.xml b/test-files/golden-tests/config/extract-friends/no-extract-friends.xml
index d6632f40c4..783eb57cb9 100644
--- a/test-files/golden-tests/config/extract-friends/no-extract-friends.xml
+++ b/test-files/golden-tests/config/extract-friends/no-extract-friends.xml
@@ -67,6 +67,7 @@
+ jTCZUvygQOxo6L+VfFZcAI6KU0Y=
hash
@@ -105,6 +106,7 @@
+ 1
operator()
diff --git a/test-files/golden-tests/config/sfinae/record-two-params.xml b/test-files/golden-tests/config/sfinae/record-two-params.xml
index 13f0f4e42a..748cc01cae 100644
--- a/test-files/golden-tests/config/sfinae/record-two-params.xml
+++ b/test-files/golden-tests/config/sfinae/record-two-params.xml
@@ -107,6 +107,8 @@
+ E4XI9hgprdQN7ez3dhWgM/Nx9DQ=
+ 5GqWQ5IFiKuJx5FMNsyMUX5/JA0=
writable_field_traits
@@ -158,6 +160,7 @@
+ 1
writable_field_traits
@@ -209,5 +212,6 @@
+ 1
diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml
index 81fc115fb9..b0404a3e72 100644
--- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml
+++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.xml
@@ -93,6 +93,8 @@
+ NLoLTepRVq6Wm8kqUGSEoM03TKg=
+ 1gG5jFtdo9Wauh4eNKJFnssDpFU=
C
@@ -138,6 +140,7 @@
+ 1
C
@@ -174,6 +177,7 @@
+ 1
B
@@ -210,6 +214,8 @@
+ S+FvHbXPEwSCkNHoe9TC9L5a4Yk=
+ VwFE3CILPejPf11zTv20aat7w8Q=
B
@@ -255,6 +261,7 @@
+ 1
B
@@ -305,6 +312,7 @@
+ 1
A
@@ -1030,6 +1038,7 @@
normal
+ 5LjM4cXZ7IywLIZW1RtfpP7tNNk=
g
@@ -1088,6 +1097,7 @@
PEedgXj8uxMWKd/yZk6yqAz6boU=
normal
+ 1
g
diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml
index 58f9b39153..c0dd3907b9 100644
--- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml
+++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.xml
@@ -101,6 +101,8 @@
+ S+FvHbXPEwSCkNHoe9TC9L5a4Yk=
+ VwFE3CILPejPf11zTv20aat7w8Q=
B
@@ -146,6 +148,7 @@
+ 1
B
@@ -196,6 +199,7 @@
+ 1
C
@@ -241,6 +245,8 @@
+ NLoLTepRVq6Wm8kqUGSEoM03TKg=
+ 1gG5jFtdo9Wauh4eNKJFnssDpFU=
C
@@ -277,6 +283,7 @@
+ 1
C
@@ -322,6 +329,7 @@
+ 1
D
@@ -1202,6 +1210,7 @@
normal
+ 5LjM4cXZ7IywLIZW1RtfpP7tNNk=
g
@@ -1260,6 +1269,7 @@
PEedgXj8uxMWKd/yZk6yqAz6boU=
normal
+ 1
h
diff --git a/test-files/golden-tests/config/sort/sort-members.xml b/test-files/golden-tests/config/sort/sort-members.xml
index cffd20302d..3cf356479b 100644
--- a/test-files/golden-tests/config/sort/sort-members.xml
+++ b/test-files/golden-tests/config/sort/sort-members.xml
@@ -101,6 +101,8 @@
+ S+FvHbXPEwSCkNHoe9TC9L5a4Yk=
+ VwFE3CILPejPf11zTv20aat7w8Q=
B
@@ -146,6 +148,7 @@
+ 1
B
@@ -196,6 +199,7 @@
+ 1
C
@@ -241,6 +245,8 @@
+ NLoLTepRVq6Wm8kqUGSEoM03TKg=
+ 1gG5jFtdo9Wauh4eNKJFnssDpFU=
C
@@ -277,6 +283,7 @@
+ 1
C
@@ -322,6 +329,7 @@
+ 1
D
@@ -1202,6 +1210,7 @@
normal
+ 5LjM4cXZ7IywLIZW1RtfpP7tNNk=
g
@@ -1260,6 +1269,7 @@
PEedgXj8uxMWKd/yZk6yqAz6boU=
normal
+ 1
h
diff --git a/test-files/golden-tests/config/sort/unordered.xml b/test-files/golden-tests/config/sort/unordered.xml
index b14dd090e9..001086d391 100644
--- a/test-files/golden-tests/config/sort/unordered.xml
+++ b/test-files/golden-tests/config/sort/unordered.xml
@@ -93,6 +93,8 @@
+ NLoLTepRVq6Wm8kqUGSEoM03TKg=
+ 1gG5jFtdo9Wauh4eNKJFnssDpFU=
C
@@ -138,6 +140,7 @@
+ 1
C
@@ -174,6 +177,7 @@
+ 1
B
@@ -210,6 +214,8 @@
+ S+FvHbXPEwSCkNHoe9TC9L5a4Yk=
+ VwFE3CILPejPf11zTv20aat7w8Q=
B
@@ -255,6 +261,7 @@
+ 1
B
@@ -305,6 +312,7 @@
+ 1
A
@@ -1318,6 +1326,7 @@
normal
+ 5LjM4cXZ7IywLIZW1RtfpP7tNNk=
g
@@ -1376,6 +1385,7 @@
PEedgXj8uxMWKd/yZk6yqAz6boU=
normal
+ 1
g
diff --git a/test-files/golden-tests/filters/symbol-type/nested-private-template.xml b/test-files/golden-tests/filters/symbol-type/nested-private-template.xml
index c4da398361..d9a9bba964 100644
--- a/test-files/golden-tests/filters/symbol-type/nested-private-template.xml
+++ b/test-files/golden-tests/filters/symbol-type/nested-private-template.xml
@@ -83,6 +83,7 @@
+ BCRU3eMBRSysyvFsjJj+0yg+Vfc=
impl
@@ -128,5 +129,6 @@
+ 1
diff --git a/test-files/golden-tests/javadoc/copydoc/template-arguments.xml b/test-files/golden-tests/javadoc/copydoc/template-arguments.xml
index 06b5f52acc..bf540ed784 100644
--- a/test-files/golden-tests/javadoc/copydoc/template-arguments.xml
+++ b/test-files/golden-tests/javadoc/copydoc/template-arguments.xml
@@ -364,6 +364,8 @@
+ n2ekv7/9IraylJIibujZeExrML4=
+ zWh7HJU4uEOW6SQu1/X6/fBkFq0=
B
@@ -410,6 +412,7 @@
+ 1
B
@@ -460,6 +463,7 @@
+ 1
C
@@ -530,6 +534,8 @@
+ w5ssdgUOfKNpDbPFUfSYesxFAc8=
+ +AYNfv3bBiQwa6z9A60U/F7dvXE=
C
@@ -581,6 +587,7 @@
+ 1
C
@@ -631,6 +638,7 @@
+ 1
D
diff --git a/test-files/golden-tests/symbols/function/sfinae.xml b/test-files/golden-tests/symbols/function/sfinae.xml
index cfb4b1a3c9..38f9264779 100644
--- a/test-files/golden-tests/symbols/function/sfinae.xml
+++ b/test-files/golden-tests/symbols/function/sfinae.xml
@@ -129,6 +129,7 @@
+ f80OzcD5UlgQ2KOvUj+MvoJcAFE=
A
@@ -181,6 +182,7 @@
+ 1
S
@@ -237,6 +239,7 @@
+ g0UNZpdodOU5mGCtcpviXd8o6Vk=
store
@@ -338,6 +341,7 @@
+ 1
store
diff --git a/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.xml b/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.xml
index 7d5ef71cf7..5ecedd2899 100644
--- a/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.xml
+++ b/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.xml
@@ -48,6 +48,9 @@
+ AKwlChAOi+0ttIAPsD7uitS+gk0=
+ C6fFmGgpPJ7jgwKJA98mfx5cxts=
+ /vjeowK9rbOfBZNuMjVMRn2iGMo=
B
@@ -80,6 +83,7 @@
+ kLfkJ6zwS7/fgRzTYaPfbg3WHg8=
g
@@ -135,6 +139,8 @@
+ EyperGIiZ7cSv/PB2BApKjPRQVA=
+ xYK8qpEgWzczUMGnNUx+ozeBle0=
h
@@ -222,6 +228,7 @@
+ 1
B
@@ -323,6 +330,7 @@
+ 1
j
@@ -396,6 +404,7 @@
+ 1
j
@@ -482,6 +491,7 @@
+ 1
B
@@ -550,6 +560,7 @@
+ 1
g
@@ -678,6 +689,7 @@
+ 1
B
@@ -851,6 +863,7 @@
+ 27+9TQyh1Vcx+C3POBLdyXJP8bo=
k
@@ -911,6 +924,7 @@
+ 1
k
diff --git a/test-files/golden-tests/symbols/guide/explicit-deduct-guide.xml b/test-files/golden-tests/symbols/guide/explicit-deduct-guide.xml
index d314a0d2a3..a344780554 100644
--- a/test-files/golden-tests/symbols/guide/explicit-deduct-guide.xml
+++ b/test-files/golden-tests/symbols/guide/explicit-deduct-guide.xml
@@ -49,6 +49,10 @@
+ AtQyLakD3CjcM24GabAbHMNgVU4=
+ YS/v8XQ/9ShQ2spNAh5EY33PN7s=
+ tkYkUU6H8cbFpCU7yBuvBLkT6dg=
+ 2IF4pOfGcA57GQDlE3PJgs7yeUs=
X
diff --git a/test-files/golden-tests/symbols/record/class-template-array-spec.xml b/test-files/golden-tests/symbols/record/class-template-array-spec.xml
index b4cb8e2219..c7a5ef3dd3 100644
--- a/test-files/golden-tests/symbols/record/class-template-array-spec.xml
+++ b/test-files/golden-tests/symbols/record/class-template-array-spec.xml
@@ -86,6 +86,7 @@
+ BImCLyzY3azoxv/pd8PtoMYhX4k=
A
@@ -158,5 +159,6 @@
+ 1
diff --git a/test-files/golden-tests/symbols/record/class-template-partial-spec.xml b/test-files/golden-tests/symbols/record/class-template-partial-spec.xml
index 25414be979..92c331bbc1 100644
--- a/test-files/golden-tests/symbols/record/class-template-partial-spec.xml
+++ b/test-files/golden-tests/symbols/record/class-template-partial-spec.xml
@@ -80,6 +80,8 @@
+ RB9DBMAJDxjxuRQCinQOVPFSNek=
+ Y/lm1lkT88vf1Ml123mbuN6Fp2Y=
B
@@ -125,6 +127,7 @@
+ 1
B
@@ -177,5 +180,6 @@
+ 1
diff --git a/test-files/golden-tests/symbols/record/class-template-spec.xml b/test-files/golden-tests/symbols/record/class-template-spec.xml
index 538adeb9e5..a86eb98d87 100644
--- a/test-files/golden-tests/symbols/record/class-template-spec.xml
+++ b/test-files/golden-tests/symbols/record/class-template-spec.xml
@@ -50,6 +50,8 @@
+ AKwlChAOi+0ttIAPsD7uitS+gk0=
+ y/8TvVlacBAIG2ds2aYgZE+zGUU=
f
@@ -110,6 +112,7 @@
+ 1
g
@@ -170,6 +173,7 @@
+ 1
h
@@ -225,6 +229,8 @@
+ ZjUaxeOoGJ0Jol9Nmn7cGRE7RCo=
+ dydGCFMdrM4nOwuv3RCXqg2KCUA=
f
@@ -292,6 +298,7 @@
+ 1
h
@@ -359,6 +366,7 @@
+ 1
g
@@ -419,6 +427,8 @@
+ qrcrkE8Br83XKNMh95Dvwpph/M8=
+ 6zS87fCNnLtFfHbRWEmcdeAT1Zg=
f
@@ -488,6 +498,7 @@
+ 1
g
@@ -564,6 +575,7 @@
+ 1
h
diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-1.xml b/test-files/golden-tests/symbols/record/class-template-specializations-1.xml
index 4a12a0927b..1aa58dc093 100644
--- a/test-files/golden-tests/symbols/record/class-template-specializations-1.xml
+++ b/test-files/golden-tests/symbols/record/class-template-specializations-1.xml
@@ -219,6 +219,17 @@
+ JnRKKJOV9sM2/Wi7ytI5OenLTcs=
+ Lu2i8tgrw9I5p6DXmX9LfM8mVSo=
+ OsUzyKi8NDCZFI1r1y4+Ki/4H0s=
+ Xes4IqvFnQoGkxPlP4C4wtbjqxQ=
+ ZyL4aBHmvCmfq+HyxDSySKwRsdA=
+ eWg27/kfn86dUmPA26mcOo6kkfs=
+ g2iVCce1Dp6iPMyevfuMN/UU9F0=
+ p3PhPnVydwdupHBMAXlcrNQuiFo=
+ tcws+2wcXL0FEmvv7ZVXvxSkAaI=
+ zpDyI51RjdguXF8/9KXFrICQwEc=
+ 8snJ9gp5ca88/AsWGEnFe6Ln6RQ=
S3
@@ -318,6 +329,9 @@
+ J3UZDljdSJ1mGU9Js0JpA3TjVtc=
+ cV4O7e/J4xug1ZmsOQKwDVjE99M=
+ yPCRvP9B34hMThomBKlaCzkFM54=
f4
@@ -439,6 +453,25 @@
+ IhITMrVguwgsTFnxWSalhrn5lnw=
+ I29LgIfKHs2KVKydoPZ2XncISyM=
+ NnzxSBCBz0/s6OkCTTL/yDO06Go=
+ RFQpd+7V+unGQTgk13maA1YEoyY=
+ XLAZYk894KbFFFIzJpR6c2Fi870=
+ dO93MwJZmA5Fpzul37ZMH6F1ong=
+ fpqbvQR9NuaJY4fq9LHbiAsZKzw=
+ hpAmCOpzad0YvzIs/nrK1blINCo=
+ j53XjxydcG+wI0iK3mM8/acK5rY=
+ lmGGu3RmJh5DZfXs5nd811FPf14=
+ s40Z8yfzcJnCZSeYYV5sYlFzOxs=
+ tZqwapq24sWOnWsHAcGXH/3yX3Y=
+ uE1JLlP4kj18/7anYGDOOUyNK5M=
+ umZ8gPZZ+qTWuYY3zYO/hx1XCGI=
+ wpJv75dxyLgHOdHJsb50f1IIDVc=
+ 1ro4Sv8wGUNxysGIgXgcl9hcP68=
+ 51FuSsXmA0w505ZBRVkx0q/lmUk=
+ +J66oroZ92MSPf/1vk3672IXQRM=
+ +YuAVlOefcnfZIU1wckNM7lfNaA=
S6
@@ -518,6 +551,17 @@
+ GJK8oH0tb+kOcrLsJD4KLPgW01k=
+ J7tgsUhd+qpsq/85qkEgF1l14uk=
+ NkmHmT5oAR5xJObAVl4zdPrTJPk=
+ VxqDdgdkcw8E86ZiNolpXLlhyWs=
+ V/H0waQNmYhkbcgX6kBFOODNK64=
+ pbmVOgtPeZtTL7BQG/AM7NVsNdo=
+ r7aMtw1PqhcjWuGFP7pwiW2v0ks=
+ 1YtqF4WYT0uK7amUiCmJVk03Oog=
+ 3eTbiMMR3GPY7/xRty3EmJ9bdQU=
+ 3jBuzbuFB0fvpQa1ETvIXevGH2w=
+ 9PQcUNZCJePNJhT5t0prZNV/lHk=
S8
@@ -617,6 +661,9 @@
+ CvFJnK9Xu7B2Fbh91NqM0+gKVEU=
+ hwfbdkFRNunC/3V+s6HA5BwWiSQ=
+ 8PQtbs9xGpu1L+b0VOqfLlE6TnY=
f9
@@ -1315,6 +1362,17 @@
+ JnRKKJOV9sM2/Wi7ytI5OenLTcs=
+ Lu2i8tgrw9I5p6DXmX9LfM8mVSo=
+ OsUzyKi8NDCZFI1r1y4+Ki/4H0s=
+ Xes4IqvFnQoGkxPlP4C4wtbjqxQ=
+ ZyL4aBHmvCmfq+HyxDSySKwRsdA=
+ eWg27/kfn86dUmPA26mcOo6kkfs=
+ g2iVCce1Dp6iPMyevfuMN/UU9F0=
+ p3PhPnVydwdupHBMAXlcrNQuiFo=
+ tcws+2wcXL0FEmvv7ZVXvxSkAaI=
+ zpDyI51RjdguXF8/9KXFrICQwEc=
+ 8snJ9gp5ca88/AsWGEnFe6Ln6RQ=
S3
@@ -1414,6 +1472,9 @@
+ J3UZDljdSJ1mGU9Js0JpA3TjVtc=
+ cV4O7e/J4xug1ZmsOQKwDVjE99M=
+ yPCRvP9B34hMThomBKlaCzkFM54=
f4
@@ -1535,6 +1596,25 @@
+ IhITMrVguwgsTFnxWSalhrn5lnw=
+ I29LgIfKHs2KVKydoPZ2XncISyM=
+ NnzxSBCBz0/s6OkCTTL/yDO06Go=
+ RFQpd+7V+unGQTgk13maA1YEoyY=
+ XLAZYk894KbFFFIzJpR6c2Fi870=
+ dO93MwJZmA5Fpzul37ZMH6F1ong=
+ fpqbvQR9NuaJY4fq9LHbiAsZKzw=
+ hpAmCOpzad0YvzIs/nrK1blINCo=
+ j53XjxydcG+wI0iK3mM8/acK5rY=
+ lmGGu3RmJh5DZfXs5nd811FPf14=
+ s40Z8yfzcJnCZSeYYV5sYlFzOxs=
+ tZqwapq24sWOnWsHAcGXH/3yX3Y=
+ uE1JLlP4kj18/7anYGDOOUyNK5M=
+ umZ8gPZZ+qTWuYY3zYO/hx1XCGI=
+ wpJv75dxyLgHOdHJsb50f1IIDVc=
+ 1ro4Sv8wGUNxysGIgXgcl9hcP68=
+ 51FuSsXmA0w505ZBRVkx0q/lmUk=
+ +J66oroZ92MSPf/1vk3672IXQRM=
+ +YuAVlOefcnfZIU1wckNM7lfNaA=
S6
@@ -1614,6 +1694,17 @@
+ GJK8oH0tb+kOcrLsJD4KLPgW01k=
+ J7tgsUhd+qpsq/85qkEgF1l14uk=
+ NkmHmT5oAR5xJObAVl4zdPrTJPk=
+ VxqDdgdkcw8E86ZiNolpXLlhyWs=
+ V/H0waQNmYhkbcgX6kBFOODNK64=
+ pbmVOgtPeZtTL7BQG/AM7NVsNdo=
+ r7aMtw1PqhcjWuGFP7pwiW2v0ks=
+ 1YtqF4WYT0uK7amUiCmJVk03Oog=
+ 3eTbiMMR3GPY7/xRty3EmJ9bdQU=
+ 3jBuzbuFB0fvpQa1ETvIXevGH2w=
+ 9PQcUNZCJePNJhT5t0prZNV/lHk=
S8
@@ -1713,6 +1804,9 @@
+ CvFJnK9Xu7B2Fbh91NqM0+gKVEU=
+ hwfbdkFRNunC/3V+s6HA5BwWiSQ=
+ 8PQtbs9xGpu1L+b0VOqfLlE6TnY=
f9
@@ -2352,6 +2446,17 @@
+ JnRKKJOV9sM2/Wi7ytI5OenLTcs=
+ Lu2i8tgrw9I5p6DXmX9LfM8mVSo=
+ OsUzyKi8NDCZFI1r1y4+Ki/4H0s=
+ Xes4IqvFnQoGkxPlP4C4wtbjqxQ=
+ ZyL4aBHmvCmfq+HyxDSySKwRsdA=
+ eWg27/kfn86dUmPA26mcOo6kkfs=
+ g2iVCce1Dp6iPMyevfuMN/UU9F0=
+ p3PhPnVydwdupHBMAXlcrNQuiFo=
+ tcws+2wcXL0FEmvv7ZVXvxSkAaI=
+ zpDyI51RjdguXF8/9KXFrICQwEc=
+ 8snJ9gp5ca88/AsWGEnFe6Ln6RQ=
S3
@@ -2451,6 +2556,9 @@
+ J3UZDljdSJ1mGU9Js0JpA3TjVtc=
+ cV4O7e/J4xug1ZmsOQKwDVjE99M=
+ yPCRvP9B34hMThomBKlaCzkFM54=
f4
@@ -2572,6 +2680,25 @@
+ IhITMrVguwgsTFnxWSalhrn5lnw=
+ I29LgIfKHs2KVKydoPZ2XncISyM=
+ NnzxSBCBz0/s6OkCTTL/yDO06Go=
+ RFQpd+7V+unGQTgk13maA1YEoyY=
+ XLAZYk894KbFFFIzJpR6c2Fi870=
+ dO93MwJZmA5Fpzul37ZMH6F1ong=
+ fpqbvQR9NuaJY4fq9LHbiAsZKzw=
+ hpAmCOpzad0YvzIs/nrK1blINCo=
+ j53XjxydcG+wI0iK3mM8/acK5rY=
+ lmGGu3RmJh5DZfXs5nd811FPf14=
+ s40Z8yfzcJnCZSeYYV5sYlFzOxs=
+ tZqwapq24sWOnWsHAcGXH/3yX3Y=
+ uE1JLlP4kj18/7anYGDOOUyNK5M=
+ umZ8gPZZ+qTWuYY3zYO/hx1XCGI=
+ wpJv75dxyLgHOdHJsb50f1IIDVc=
+ 1ro4Sv8wGUNxysGIgXgcl9hcP68=
+ 51FuSsXmA0w505ZBRVkx0q/lmUk=
+ +J66oroZ92MSPf/1vk3672IXQRM=
+ +YuAVlOefcnfZIU1wckNM7lfNaA=
S6
@@ -2651,6 +2778,17 @@
+ GJK8oH0tb+kOcrLsJD4KLPgW01k=
+ J7tgsUhd+qpsq/85qkEgF1l14uk=
+ NkmHmT5oAR5xJObAVl4zdPrTJPk=
+ VxqDdgdkcw8E86ZiNolpXLlhyWs=
+ V/H0waQNmYhkbcgX6kBFOODNK64=
+ pbmVOgtPeZtTL7BQG/AM7NVsNdo=
+ r7aMtw1PqhcjWuGFP7pwiW2v0ks=
+ 1YtqF4WYT0uK7amUiCmJVk03Oog=
+ 3eTbiMMR3GPY7/xRty3EmJ9bdQU=
+ 3jBuzbuFB0fvpQa1ETvIXevGH2w=
+ 9PQcUNZCJePNJhT5t0prZNV/lHk=
S8
@@ -2750,6 +2888,9 @@
+ CvFJnK9Xu7B2Fbh91NqM0+gKVEU=
+ hwfbdkFRNunC/3V+s6HA5BwWiSQ=
+ 8PQtbs9xGpu1L+b0VOqfLlE6TnY=
f9
@@ -2980,6 +3121,17 @@
+ JnRKKJOV9sM2/Wi7ytI5OenLTcs=
+ Lu2i8tgrw9I5p6DXmX9LfM8mVSo=
+ OsUzyKi8NDCZFI1r1y4+Ki/4H0s=
+ Xes4IqvFnQoGkxPlP4C4wtbjqxQ=
+ ZyL4aBHmvCmfq+HyxDSySKwRsdA=
+ eWg27/kfn86dUmPA26mcOo6kkfs=
+ g2iVCce1Dp6iPMyevfuMN/UU9F0=
+ p3PhPnVydwdupHBMAXlcrNQuiFo=
+ tcws+2wcXL0FEmvv7ZVXvxSkAaI=
+ zpDyI51RjdguXF8/9KXFrICQwEc=
+ 8snJ9gp5ca88/AsWGEnFe6Ln6RQ=
S3
@@ -3079,6 +3231,9 @@
+ J3UZDljdSJ1mGU9Js0JpA3TjVtc=
+ cV4O7e/J4xug1ZmsOQKwDVjE99M=
+ yPCRvP9B34hMThomBKlaCzkFM54=
f4
@@ -3200,6 +3355,25 @@
+ IhITMrVguwgsTFnxWSalhrn5lnw=
+ I29LgIfKHs2KVKydoPZ2XncISyM=
+ NnzxSBCBz0/s6OkCTTL/yDO06Go=
+ RFQpd+7V+unGQTgk13maA1YEoyY=
+ XLAZYk894KbFFFIzJpR6c2Fi870=
+ dO93MwJZmA5Fpzul37ZMH6F1ong=
+ fpqbvQR9NuaJY4fq9LHbiAsZKzw=
+ hpAmCOpzad0YvzIs/nrK1blINCo=
+ j53XjxydcG+wI0iK3mM8/acK5rY=
+ lmGGu3RmJh5DZfXs5nd811FPf14=
+ s40Z8yfzcJnCZSeYYV5sYlFzOxs=
+ tZqwapq24sWOnWsHAcGXH/3yX3Y=
+ uE1JLlP4kj18/7anYGDOOUyNK5M=
+ umZ8gPZZ+qTWuYY3zYO/hx1XCGI=
+ wpJv75dxyLgHOdHJsb50f1IIDVc=
+ 1ro4Sv8wGUNxysGIgXgcl9hcP68=
+ 51FuSsXmA0w505ZBRVkx0q/lmUk=
+ +J66oroZ92MSPf/1vk3672IXQRM=
+ +YuAVlOefcnfZIU1wckNM7lfNaA=
S6
@@ -3279,6 +3453,17 @@
+ GJK8oH0tb+kOcrLsJD4KLPgW01k=
+ J7tgsUhd+qpsq/85qkEgF1l14uk=
+ NkmHmT5oAR5xJObAVl4zdPrTJPk=
+ VxqDdgdkcw8E86ZiNolpXLlhyWs=
+ V/H0waQNmYhkbcgX6kBFOODNK64=
+ pbmVOgtPeZtTL7BQG/AM7NVsNdo=
+ r7aMtw1PqhcjWuGFP7pwiW2v0ks=
+ 1YtqF4WYT0uK7amUiCmJVk03Oog=
+ 3eTbiMMR3GPY7/xRty3EmJ9bdQU=
+ 3jBuzbuFB0fvpQa1ETvIXevGH2w=
+ 9PQcUNZCJePNJhT5t0prZNV/lHk=
S8
@@ -3378,6 +3563,9 @@
+ CvFJnK9Xu7B2Fbh91NqM0+gKVEU=
+ hwfbdkFRNunC/3V+s6HA5BwWiSQ=
+ 8PQtbs9xGpu1L+b0VOqfLlE6TnY=
f9
@@ -4996,6 +5184,47 @@
+ ANhUz0/2S6fRsXsZFhXPTPyPfAE=
+ AhWlDEmWhkTeQuWWCaZwMGCG5HQ=
+ A9DWlv0rbuFs3A9eHqZTaJDN7Uk=
+ ByHV/GlyHOt9h6ZVKpsDi/DkBkM=
+ FREf1tucqdONQ71W3hB/Sf/Fbw4=
+ IG7byGfx+stnhACpeGR2toLyv7U=
+ IKgocAXkFMvNmDD+p5dZpSBSRHI=
+ IbslzK4eUJj1gUsgbS4h/0Axavg=
+ IxCiCl8tf7r2/CmQWZiWxFHf7+g=
+ MUilGFE5YvyMgRjHIcQZ38yyl2c=
+ MYFk6ANWkex8j7vBuMpAqchgYIY=
+ MyTy/GXkOXKOTiJVqHAVVvaU4es=
+ PA+4gdvi0ChhszyGuOL6zlYXHpk=
+ Rh5ZoB5qF98iwmDPqUPnsyKkTcs=
+ UUBd87/k0jse5896L03eJ4N0l+c=
+ UpHebkkBv0Q2s1ECAoKTf79hJ0Q=
+ Up/SfnuYTQw+Y6klSO3f5z86DOY=
+ WK6dfZ+3VdrJbp4Egq7SCGyoAF8=
+ Wu710hbNOx84LbfjQUEgqKkZ2dA=
+ a69mw641E3cHVf6ovpLtJxTpmps=
+ c7NNZfjOZ8Ztuw0u26xL/h7UKvA=
+ eiJusMAs3cvoF4DWqUBlAfXzYcA=
+ flxREiXFL5ObY0xUAxojj+jvR54=
+ hwWIBHTi29w+6bJar0PyQvwnZWw=
+ kn1OyT1FzAvXXJMp4nKleaEX+5c=
+ nJGs54s6oYf7fHzIpo0tyaCSH9M=
+ niyoFejCRrpY1Aa9GHwGMnaDfsQ=
+ nkoZM9sg9xpibNb1eDSyhqn/Ato=
+ nuqq8wSa/4T9E2xaPl/SzBPbekM=
+ oXfsqUlMzPbEZZJ7K+iZYQj3wko=
+ oj8XjM2vuWbeoc2sBpfsIoleCao=
+ o06yQpJHyCkZyFI44/nN8/tpgT8=
+ pxo3Lx5X+FdLdaGOmXmAiuNVQME=
+ tuaR3CreZXFWLNOiRe6vUMcdi/0=
+ uoCdOuqB1v1s6rvl4wDWcLrD4LA=
+ vt6SAnqggizkWUqtSC5b9rVm+Qw=
+ xONzwxGiMBJrTYA5eosi4pOC0n0=
+ x7MfNbWaSdnUCRBlHt+nSvOlEPw=
+ zYIKjNzi/kYNKvtrTXu8BhQTFt8=
+ 1gjCMmREpyWTXEFMqDWbHTY9s+Q=
+ 7v/tytUkZe7COeYW1bbrzC9LRio=
S1
@@ -5075,6 +5304,17 @@
+ JnRKKJOV9sM2/Wi7ytI5OenLTcs=
+ Lu2i8tgrw9I5p6DXmX9LfM8mVSo=
+ OsUzyKi8NDCZFI1r1y4+Ki/4H0s=
+ Xes4IqvFnQoGkxPlP4C4wtbjqxQ=
+ ZyL4aBHmvCmfq+HyxDSySKwRsdA=
+ eWg27/kfn86dUmPA26mcOo6kkfs=
+ g2iVCce1Dp6iPMyevfuMN/UU9F0=
+ p3PhPnVydwdupHBMAXlcrNQuiFo=
+ tcws+2wcXL0FEmvv7ZVXvxSkAaI=
+ zpDyI51RjdguXF8/9KXFrICQwEc=
+ 8snJ9gp5ca88/AsWGEnFe6Ln6RQ=
S3
@@ -5174,6 +5414,9 @@
+ J3UZDljdSJ1mGU9Js0JpA3TjVtc=
+ cV4O7e/J4xug1ZmsOQKwDVjE99M=
+ yPCRvP9B34hMThomBKlaCzkFM54=
f4
@@ -5295,6 +5538,25 @@
+ IhITMrVguwgsTFnxWSalhrn5lnw=
+ I29LgIfKHs2KVKydoPZ2XncISyM=
+ NnzxSBCBz0/s6OkCTTL/yDO06Go=
+ RFQpd+7V+unGQTgk13maA1YEoyY=
+ XLAZYk894KbFFFIzJpR6c2Fi870=
+ dO93MwJZmA5Fpzul37ZMH6F1ong=
+ fpqbvQR9NuaJY4fq9LHbiAsZKzw=
+ hpAmCOpzad0YvzIs/nrK1blINCo=
+ j53XjxydcG+wI0iK3mM8/acK5rY=
+ lmGGu3RmJh5DZfXs5nd811FPf14=
+ s40Z8yfzcJnCZSeYYV5sYlFzOxs=
+ tZqwapq24sWOnWsHAcGXH/3yX3Y=
+ uE1JLlP4kj18/7anYGDOOUyNK5M=
+ umZ8gPZZ+qTWuYY3zYO/hx1XCGI=
+ wpJv75dxyLgHOdHJsb50f1IIDVc=
+ 1ro4Sv8wGUNxysGIgXgcl9hcP68=
+ 51FuSsXmA0w505ZBRVkx0q/lmUk=
+ +J66oroZ92MSPf/1vk3672IXQRM=
+ +YuAVlOefcnfZIU1wckNM7lfNaA=
S6
@@ -5374,6 +5636,17 @@
+ GJK8oH0tb+kOcrLsJD4KLPgW01k=
+ J7tgsUhd+qpsq/85qkEgF1l14uk=
+ NkmHmT5oAR5xJObAVl4zdPrTJPk=
+ VxqDdgdkcw8E86ZiNolpXLlhyWs=
+ V/H0waQNmYhkbcgX6kBFOODNK64=
+ pbmVOgtPeZtTL7BQG/AM7NVsNdo=
+ r7aMtw1PqhcjWuGFP7pwiW2v0ks=
+ 1YtqF4WYT0uK7amUiCmJVk03Oog=
+ 3eTbiMMR3GPY7/xRty3EmJ9bdQU=
+ 3jBuzbuFB0fvpQa1ETvIXevGH2w=
+ 9PQcUNZCJePNJhT5t0prZNV/lHk=
S8
@@ -5473,6 +5746,9 @@
+ CvFJnK9Xu7B2Fbh91NqM0+gKVEU=
+ hwfbdkFRNunC/3V+s6HA5BwWiSQ=
+ 8PQtbs9xGpu1L+b0VOqfLlE6TnY=
f9
@@ -5620,6 +5896,7 @@
+ 1
S0
@@ -5654,6 +5931,7 @@
+ 1
S1
@@ -5766,6 +6044,7 @@
+ 1
S3
@@ -6000,6 +6279,7 @@
+ 1
S1
@@ -6112,6 +6392,7 @@
+ 1
S3
@@ -6218,6 +6499,7 @@
+ 1
f2
@@ -6371,6 +6653,7 @@
+ 1
S1
@@ -6485,6 +6768,7 @@
+ 1
S3
@@ -6603,6 +6887,7 @@
+ 1
S4
@@ -6650,6 +6935,7 @@
+ 1
f2
@@ -6804,6 +7090,7 @@
+ 1
S1
@@ -6943,6 +7230,7 @@
+ 1
S1
@@ -7049,6 +7337,7 @@
+ 1
f0
@@ -7106,6 +7395,7 @@
+ 1
S1
@@ -7247,6 +7537,7 @@
+ 1
S1
@@ -7365,6 +7656,7 @@
+ 1
S5
@@ -7412,6 +7704,7 @@
+ 1
f0
@@ -7470,6 +7763,7 @@
+ 1
S1
@@ -7577,6 +7871,7 @@
+ 1
S6
@@ -7689,6 +7984,7 @@
+ 1
S1
@@ -7796,6 +8092,7 @@
+ 1
S6
@@ -7984,6 +8281,7 @@
+ 1
S1
@@ -8091,6 +8389,7 @@
+ 1
S6
@@ -8214,6 +8513,7 @@
+ 1
S7
@@ -8261,6 +8561,7 @@
+ 1
f6
@@ -8364,6 +8665,7 @@
+ 1
S1
@@ -8579,6 +8881,7 @@
+ 1
S1
@@ -8686,6 +8989,7 @@
+ 1
S6
@@ -8795,6 +9099,7 @@
+ 1
f6
@@ -8899,6 +9204,7 @@
+ 1
S1
@@ -9006,6 +9312,7 @@
+ 1
S6
@@ -9117,6 +9424,7 @@
+ 1
S8
@@ -9325,6 +9633,7 @@
+ 1
S1
@@ -9432,6 +9741,7 @@
+ 1
S6
@@ -9544,6 +9854,7 @@
+ 1
S8
@@ -9752,6 +10063,7 @@
+ 1
S1
@@ -9859,6 +10171,7 @@
+ 1
S6
@@ -9973,6 +10286,7 @@
+ 1
S8
@@ -10091,6 +10405,7 @@
+ 1
S9
@@ -10138,6 +10453,7 @@
+ 1
f7
@@ -10264,6 +10580,7 @@
+ 1
S1
@@ -10373,6 +10690,7 @@
+ 1
f1
@@ -10504,6 +10822,7 @@
+ 1
S1
@@ -10611,6 +10930,7 @@
+ 1
S6
@@ -10723,6 +11043,7 @@
+ 1
S8
@@ -10829,6 +11150,7 @@
+ 1
f7
@@ -10955,6 +11277,7 @@
+ 1
S1
@@ -11078,6 +11401,7 @@
+ 1
S2
@@ -11125,6 +11449,7 @@
+ 1
f1
@@ -11255,6 +11580,7 @@
+ 1
S1
@@ -11366,6 +11692,7 @@
+ 1
S3
@@ -11609,6 +11936,7 @@
+ 1
S0
@@ -11652,6 +11980,7 @@
+ 1
S1
@@ -11772,6 +12101,7 @@
+ 1
S3
@@ -12009,6 +12339,7 @@
+ 1
S1
@@ -12130,6 +12461,7 @@
+ 1
S3
@@ -12367,6 +12699,7 @@
+ 1
S1
@@ -12488,6 +12821,7 @@
+ 1
S3
@@ -12725,6 +13059,7 @@
+ 1
S1
@@ -12867,6 +13202,7 @@
+ 1
S1
@@ -13008,6 +13344,7 @@
+ 1
S1
@@ -13225,6 +13562,7 @@
+ 1
S1
@@ -13367,6 +13705,7 @@
+ 1
S1
@@ -13483,6 +13822,7 @@
+ 1
S6
@@ -13673,6 +14013,7 @@
+ 1
S1
@@ -13789,6 +14130,7 @@
+ 1
S6
@@ -13979,6 +14321,7 @@
+ 1
S1
@@ -14095,6 +14438,7 @@
+ 1
S6
@@ -14285,6 +14629,7 @@
+ 1
S1
@@ -14502,6 +14847,7 @@
+ 1
S1
@@ -14618,6 +14964,7 @@
+ 1
S6
@@ -14809,6 +15156,7 @@
+ 1
S1
@@ -14925,6 +15273,7 @@
+ 1
S6
@@ -15045,6 +15394,7 @@
+ 1
S8
@@ -15280,6 +15630,7 @@
+ 1
S1
@@ -15396,6 +15747,7 @@
+ 1
S6
@@ -15516,6 +15868,7 @@
+ 1
S8
@@ -15727,6 +16080,7 @@
+ 1
S1
@@ -15843,6 +16197,7 @@
+ 1
S6
@@ -15964,6 +16319,7 @@
+ 1
S8
@@ -16174,6 +16530,7 @@
+ 1
S1
@@ -16392,6 +16749,7 @@
+ 1
S1
@@ -16508,6 +16866,7 @@
+ 1
S6
@@ -16629,6 +16988,7 @@
+ 1
S8
@@ -16839,6 +17199,7 @@
+ 1
S1
@@ -17056,6 +17417,7 @@
+ 1
S1
@@ -17176,6 +17538,7 @@
+ 1
S3
@@ -17441,5 +17804,6 @@
+ 1
diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-2.xml b/test-files/golden-tests/symbols/record/class-template-specializations-2.xml
index 2fac92c30d..8da9533449 100644
--- a/test-files/golden-tests/symbols/record/class-template-specializations-2.xml
+++ b/test-files/golden-tests/symbols/record/class-template-specializations-2.xml
@@ -44,6 +44,9 @@
+ K6BawvzqAtXZLU2Hm0qPq6aGiS8=
+ Nkvb8FA0/0YIpaybicEkWLwFOPo=
+ bcCFiKKGBMnWrAf/IBu1R/sC07s=
A
@@ -83,6 +86,7 @@
+ 1
D
@@ -116,6 +120,8 @@
+ RdjbfZA0y514GFSR1pCAjUyfq24=
+ flW1A8++hJYAIoinZHMJ/EargvI=
E
@@ -147,6 +153,8 @@
+ HzSR9lAhcaSZke6x6ggUIqnawQw=
+ TpBRSCUm33PjLoWxW50FZsR1GSM=
E
@@ -191,6 +199,7 @@
+ 1
F
@@ -253,6 +262,7 @@
+ 1
G
@@ -284,6 +294,7 @@
+ zPgrcrIOrcVWP7Qpw8x3Zl2fIpI=
G
@@ -327,6 +338,7 @@
+ 1
D
@@ -365,6 +377,7 @@
+ 1
E
@@ -435,6 +448,7 @@
+ 1
F
@@ -506,6 +520,7 @@
+ 1
B
@@ -573,6 +588,7 @@
+ 1
B
@@ -612,6 +628,7 @@
+ 1
C
@@ -688,6 +705,7 @@
+ 1
B
@@ -719,6 +737,10 @@
+ HP4W/UatJ6BMg+LZKC5cQM4kCzw=
+ WeO5ITJRmNS4Q90O2A5hmw/KZc8=
+ vuv6bo9spUYsHZ3uwTm6i6UxSNI=
+ 3isZeaf80hT1/O3yko6EPBPmq8s=
B
@@ -755,6 +777,7 @@
+ 1
B
@@ -799,6 +822,7 @@
+ 1
C
diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-3.xml b/test-files/golden-tests/symbols/record/class-template-specializations-3.xml
index 47ad39dfb3..3408eb2ef1 100644
--- a/test-files/golden-tests/symbols/record/class-template-specializations-3.xml
+++ b/test-files/golden-tests/symbols/record/class-template-specializations-3.xml
@@ -48,6 +48,10 @@
+ C6fFmGgpPJ7jgwKJA98mfx5cxts=
+ GFV3P/JtfrnQwjOLVfI9VbJpd9U=
+ eeh34/7lF7rCmE7zXKBrUC7mz3A=
+ y/8TvVlacBAIG2ds2aYgZE+zGUU=
B
@@ -82,6 +86,12 @@
+ AmrHzqMyGcAD714oirSEx/XCTwk=
+ Ax52oDYNHKdb/kayrTPXtP7EnLo=
+ Pna+OT/o27zekcoRTFxKtb5m+BQ=
+ X9RyjucPb3aRFUq3aZCNE4g/ZVE=
+ fSC2izK+T4vA4Kndw3xNjCTDpoQ=
+ gNJJgsCrBHI+de6/WxRWfc6QUSQ=
C
@@ -137,6 +147,8 @@
+ E3rBDckOC8QkP+2YLNtbMxg69mc=
+ 8gtdVs8Zc/2hE1ugmc5SJaowDrk=
D
@@ -173,6 +185,7 @@
+ 1
B
@@ -212,6 +225,7 @@
+ 1
C
@@ -267,6 +281,11 @@
+ FQCRWOnd4VbpVowmyiWSRR2l2cA=
+ P+rxL5vI4ct+gzn9YkO97Pt7Ras=
+ rzmzIDLemEwnRqvVCiQsLO9rHE4=
+ 2n2EC+ZzX4R61vVgqMqWD1h4Fqc=
+ 9bJvdwRZpk2+HRV+Az3lOybs1Wc=
D
@@ -303,6 +322,7 @@
+ 1
A
@@ -341,6 +361,7 @@
+ 1
B
@@ -411,6 +432,7 @@
+ 1
C
@@ -502,6 +524,7 @@
+ 1
A
@@ -541,6 +564,7 @@
+ 1
B
@@ -581,6 +605,8 @@
+ jvnZWmA3eB78JX83nJawhD8NGhw=
+ 3fOXhba/en8Im2gUSThzllitRc0=
C
@@ -636,6 +662,8 @@
+ NNxnP63PrqW2AkyLFpJx0uaNuTk=
+ vu+upAyFdAr9NpomAT9maDrr5VU=
D
@@ -672,6 +700,7 @@
+ 1
B
@@ -711,6 +740,7 @@
+ 1
C
@@ -802,6 +832,7 @@
+ 1
B
@@ -841,6 +872,7 @@
+ 1
C
@@ -932,6 +964,7 @@
+ 1
A
@@ -971,6 +1004,7 @@
+ 1
B
@@ -1041,6 +1075,7 @@
+ 1
C
@@ -1132,6 +1167,7 @@
+ 1
B
@@ -1171,6 +1207,7 @@
+ 1
C
@@ -1226,6 +1263,7 @@
+ eYdoT3vlHlbkG+t3+ckhZAqrnlY=
D
@@ -1262,6 +1300,7 @@
+ 1
A
@@ -1301,6 +1340,7 @@
+ 1
B
@@ -1371,6 +1411,7 @@
+ 1
C
@@ -1462,6 +1503,7 @@
+ 1
B
@@ -1501,6 +1543,7 @@
+ 1
C
@@ -1592,6 +1635,7 @@
+ 1
E
diff --git a/test-files/golden-tests/symbols/record/specializations-and-guides.adoc b/test-files/golden-tests/symbols/record/specializations-and-guides.adoc
new file mode 100644
index 0000000000..649584ca28
--- /dev/null
+++ b/test-files/golden-tests/symbols/record/specializations-and-guides.adoc
@@ -0,0 +1,124 @@
+= Reference
+:mrdocs:
+
+[#index]
+== Global namespace
+
+=== Types
+
+[cols="1,4"]
+|===
+| Name| Description
+| link:#A-0e[`A`]
+| Primary class template.
+| link:#B-00[`B`]
+| Class template with a deduction guide.
+|===
+
+
+[#A-0e]
+== A
+
+Primary class template.
+
+=== Synopsis
+
+Declared in `<specializations‐and‐guides.cpp>`
+
+[source,cpp,subs="verbatim,replacements,macros,-callouts"]
+----
+template<typename T>
+struct A;
+----
+
+=== Member Functions
+
+[cols="1,4"]
+|===
+| Name| Description
+| link:#A-0e-f[`f`]
+| A member function.
+|===
+
+
+=== Specializations
+
+[cols="1,4"]
+|===
+| Name| Description
+| link:#A-00[`A<int>`]
+| Explicit specialization of the primary.
+|===
+
+
+[#A-0e-f]
+== link:#A-0e[A]::f
+
+A member function.
+
+=== Synopsis
+
+Declared in `<specializations‐and‐guides.cpp>`
+
+[source,cpp,subs="verbatim,replacements,macros,-callouts"]
+----
+void
+f();
+----
+
+[#A-00]
+== link:#A-0e[A]<int>
+
+Explicit specialization of the primary.
+
+=== Synopsis
+
+Declared in `<specializations‐and‐guides.cpp>`
+
+[source,cpp,subs="verbatim,replacements,macros,-callouts"]
+----
+template<>
+struct link:#A-0e[A]<int>;
+----
+
+[#B-00]
+== B
+
+Class template with a deduction guide.
+
+=== Synopsis
+
+Declared in `<specializations‐and‐guides.cpp>`
+
+[source,cpp,subs="verbatim,replacements,macros,-callouts"]
+----
+template<int>
+struct B;
+----
+
+=== Deduction Guides
+
+[cols="1,4"]
+|===
+| Name| Description
+| link:#B-0c[`B<0>`]
+| Deduction guide for B.
+|===
+
+
+[#B-0c]
+== link:#B-00[B<0>]
+
+Deduction guide for B.
+
+=== Synopsis
+
+Declared in `<specializations‐and‐guides.cpp>`
+
+[source,cpp,subs="verbatim,replacements,macros,-callouts"]
+----
+link:#B-00[B<0>](bool) -> link:#B-00[B<0>];
+----
+
+
+[.small]#Created with https://www.mrdocs.com[MrDocs]#
diff --git a/test-files/golden-tests/symbols/record/specializations-and-guides.cpp b/test-files/golden-tests/symbols/record/specializations-and-guides.cpp
new file mode 100644
index 0000000000..771190d429
--- /dev/null
+++ b/test-files/golden-tests/symbols/record/specializations-and-guides.cpp
@@ -0,0 +1,22 @@
+/// Primary class template.
+template
+struct A
+{
+ /// A member function.
+ void f();
+};
+
+/// Explicit specialization of the primary.
+template <>
+struct A
+{
+};
+
+/// Class template with a deduction guide.
+template
+struct B
+{
+};
+
+/// Deduction guide for B.
+B(bool) -> B<0>;
diff --git a/test-files/golden-tests/symbols/record/specializations-and-guides.yml b/test-files/golden-tests/symbols/record/specializations-and-guides.yml
new file mode 100644
index 0000000000..17ffc7a6f1
--- /dev/null
+++ b/test-files/golden-tests/symbols/record/specializations-and-guides.yml
@@ -0,0 +1 @@
+generator: adoc
diff --git a/test-files/golden-tests/symbols/record/template-specialization-inheritance.xml b/test-files/golden-tests/symbols/record/template-specialization-inheritance.xml
index b30ebd31a6..6d182e9c90 100644
--- a/test-files/golden-tests/symbols/record/template-specialization-inheritance.xml
+++ b/test-files/golden-tests/symbols/record/template-specialization-inheritance.xml
@@ -276,6 +276,10 @@
+ c7NNZfjOZ8Ztuw0u26xL/h7UKvA=
+ flxREiXFL5ObY0xUAxojj+jvR54=
+ nJGs54s6oYf7fHzIpo0tyaCSH9M=
+ 6Syw3aWFS3pfPUbWU7C8uCE7Jjc=
S1
@@ -332,6 +336,7 @@
+ 1
S1
@@ -389,6 +394,7 @@
+ 1
S0
@@ -421,6 +427,7 @@
+ 1
S1
@@ -476,5 +483,6 @@
+ 1
diff --git a/test-files/golden-tests/symbols/typedef/decay-to-primary.xml b/test-files/golden-tests/symbols/typedef/decay-to-primary.xml
index ecf53d917c..e0f01cdf73 100644
--- a/test-files/golden-tests/symbols/typedef/decay-to-primary.xml
+++ b/test-files/golden-tests/symbols/typedef/decay-to-primary.xml
@@ -103,6 +103,8 @@
+ BWgkCsMw6w/Tkzj0tkQJ8/AWTUo=
+ nM49pHyBLj9V6pphxxYAxi4tXXc=
M0
@@ -193,6 +195,7 @@
+ 1
M0
@@ -283,6 +286,7 @@
+ 1
M0
diff --git a/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.xml b/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.xml
index 748be35ed8..c8f12ae996 100644
--- a/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.xml
+++ b/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.xml
@@ -111,6 +111,7 @@
+ BWgkCsMw6w/Tkzj0tkQJ8/AWTUo=
S2
@@ -144,6 +145,7 @@
+ LQDMND21bNwDyy/hE3qQoQzFLXY=
M2
@@ -234,6 +236,7 @@
+ 1
S2
@@ -303,6 +306,7 @@
+ 1
M2
diff --git a/test-files/golden-tests/symbols/using/using-alias-template-dependent.xml b/test-files/golden-tests/symbols/using/using-alias-template-dependent.xml
index f66d9f2772..f0cab02f92 100644
--- a/test-files/golden-tests/symbols/using/using-alias-template-dependent.xml
+++ b/test-files/golden-tests/symbols/using/using-alias-template-dependent.xml
@@ -130,6 +130,7 @@
+ 6f4GHawhlUckr08SJkt7su9cIDY=
type
@@ -197,6 +198,7 @@
+ 1
is_match
diff --git a/test-files/golden-tests/templates/c_mct_expl_inline.xml b/test-files/golden-tests/templates/c_mct_expl_inline.xml
index 2a92b6692d..68f3fb8e8f 100644
--- a/test-files/golden-tests/templates/c_mct_expl_inline.xml
+++ b/test-files/golden-tests/templates/c_mct_expl_inline.xml
@@ -68,6 +68,7 @@
+ FxMFFVpoV2/LOOndnkQ2gu3w69U=
f
@@ -128,6 +129,7 @@
+ 1
g
diff --git a/test-files/golden-tests/templates/c_mct_expl_outside.xml b/test-files/golden-tests/templates/c_mct_expl_outside.xml
index 69e21fb2f9..282bd8ef18 100644
--- a/test-files/golden-tests/templates/c_mct_expl_outside.xml
+++ b/test-files/golden-tests/templates/c_mct_expl_outside.xml
@@ -68,6 +68,7 @@
+ FxMFFVpoV2/LOOndnkQ2gu3w69U=
f
@@ -128,6 +129,7 @@
+ 1
g
diff --git a/test-files/golden-tests/templates/c_mft_expl_inline.xml b/test-files/golden-tests/templates/c_mft_expl_inline.xml
index 76b185d1e1..60f988e209 100644
--- a/test-files/golden-tests/templates/c_mft_expl_inline.xml
+++ b/test-files/golden-tests/templates/c_mft_expl_inline.xml
@@ -89,6 +89,7 @@
normal
1
+ veV2posfyuimiNezTTVnomiz6tY=
f
@@ -124,5 +125,6 @@
normal
1
+ 1
diff --git a/test-files/golden-tests/templates/c_mft_expl_outside.xml b/test-files/golden-tests/templates/c_mft_expl_outside.xml
index 4181a47e63..c0496706ac 100644
--- a/test-files/golden-tests/templates/c_mft_expl_outside.xml
+++ b/test-files/golden-tests/templates/c_mft_expl_outside.xml
@@ -89,6 +89,7 @@
normal
1
+ veV2posfyuimiNezTTVnomiz6tY=
f
@@ -124,5 +125,6 @@
normal
1
+ 1
diff --git a/test-files/golden-tests/templates/ct_expl.xml b/test-files/golden-tests/templates/ct_expl.xml
index e7b8a06820..7a8174c22f 100644
--- a/test-files/golden-tests/templates/ct_expl.xml
+++ b/test-files/golden-tests/templates/ct_expl.xml
@@ -43,6 +43,7 @@
+ AKwlChAOi+0ttIAPsD7uitS+gk0=
f
@@ -103,6 +104,7 @@
+ 1
g
diff --git a/test-files/golden-tests/templates/ct_mc_expl_outside.xml b/test-files/golden-tests/templates/ct_mc_expl_outside.xml
index f4a71e9b82..674c8824dd 100644
--- a/test-files/golden-tests/templates/ct_mc_expl_outside.xml
+++ b/test-files/golden-tests/templates/ct_mc_expl_outside.xml
@@ -43,6 +43,7 @@
+ AKwlChAOi+0ttIAPsD7uitS+gk0=
B
@@ -128,6 +129,7 @@
+ 1
B
diff --git a/test-files/golden-tests/templates/ct_mct_expl_inline.xml b/test-files/golden-tests/templates/ct_mct_expl_inline.xml
index 6580f28709..b1ba26341c 100644
--- a/test-files/golden-tests/templates/ct_mct_expl_inline.xml
+++ b/test-files/golden-tests/templates/ct_mct_expl_inline.xml
@@ -75,6 +75,7 @@
+ bHsbts/3qH4qdnqFkFXkR6e8OCw=
f
@@ -135,6 +136,7 @@
+ 1
g
diff --git a/test-files/golden-tests/templates/ct_mct_expl_outside.xml b/test-files/golden-tests/templates/ct_mct_expl_outside.xml
index 86c9fbb084..afef786c29 100644
--- a/test-files/golden-tests/templates/ct_mct_expl_outside.xml
+++ b/test-files/golden-tests/templates/ct_mct_expl_outside.xml
@@ -43,6 +43,7 @@
+ AKwlChAOi+0ttIAPsD7uitS+gk0=
B
@@ -75,6 +76,7 @@
+ IMS2etMN5nj/r7pRC8mVNme6K+o=
f
@@ -136,6 +138,7 @@
+ 1
B
@@ -204,6 +207,7 @@
+ 1
g
diff --git a/test-files/golden-tests/templates/ct_mf_expl_outside.xml b/test-files/golden-tests/templates/ct_mf_expl_outside.xml
index b6803bf651..472de47b3a 100644
--- a/test-files/golden-tests/templates/ct_mf_expl_outside.xml
+++ b/test-files/golden-tests/templates/ct_mf_expl_outside.xml
@@ -43,6 +43,7 @@
+ AKwlChAOi+0ttIAPsD7uitS+gk0=
f
@@ -103,6 +104,7 @@
+ 1
f
diff --git a/test-files/golden-tests/templates/ct_mft_expl_inline.xml b/test-files/golden-tests/templates/ct_mft_expl_inline.xml
index cfbc7a499b..0927eb233d 100644
--- a/test-files/golden-tests/templates/ct_mft_expl_inline.xml
+++ b/test-files/golden-tests/templates/ct_mft_expl_inline.xml
@@ -96,6 +96,7 @@
normal
1
+ TneA5Ayz4v/9oOUbbnRL1ybm8VM=
f
@@ -131,5 +132,6 @@
normal
1
+ 1
diff --git a/test-files/golden-tests/templates/ct_mft_expl_outside.xml b/test-files/golden-tests/templates/ct_mft_expl_outside.xml
index 4bf78c294d..c38c982b30 100644
--- a/test-files/golden-tests/templates/ct_mft_expl_outside.xml
+++ b/test-files/golden-tests/templates/ct_mft_expl_outside.xml
@@ -43,6 +43,7 @@
+ AKwlChAOi+0ttIAPsD7uitS+gk0=
f
@@ -73,6 +74,7 @@
normal
1
+ fjcm9F09lrCrLSgw6Swqw9KOBlM=
A
@@ -110,6 +112,7 @@
+ 1
f
@@ -205,5 +208,6 @@
normal
1
+ 1
diff --git a/test-files/golden-tests/templates/ft_expl.xml b/test-files/golden-tests/templates/ft_expl.xml
index 925f1b0e72..8bff955b3e 100644
--- a/test-files/golden-tests/templates/ft_expl.xml
+++ b/test-files/golden-tests/templates/ft_expl.xml
@@ -63,6 +63,7 @@
normal
+ ytuvwgqk+lakIfCF209MYkKEp4k=
f
@@ -97,5 +98,6 @@
PmhXjCXUJYVnj/a7NhfjjSesyp0=
normal
+ 1