From fb110201c5e139a05b54450a6b8c5894f32b8f37 Mon Sep 17 00:00:00 2001 From: Gennaro Prota Date: Wed, 13 May 2026 11:05:33 +0200 Subject: [PATCH] feat: move template specializations and deduction guides off parent scope page Class template specializations, function template specializations, and deduction guides used to share the enclosing scope's listing with their primary template. Users have repeatedly reported this as confusing: `vector` and `vector` appearing side by side in the namespace index reads as if they were independent siblings, and a primary's variants were nowhere on its own page. Specializations now appear in a dedicated "Specializations" section on the primary's documentation page, and deduction guides in a "Deduction Guides" section on the deduced class's page. The parent scope's listing carries only the primary itself. An orphan specialization (one whose primary has been excluded from extraction) stays in the parent's listing so the index can still reach it. The corpus is unchanged: XML output and consumers of the metadata schema see the same data as before. The new sections are derived in the presentation layer. Closes issue #1154. --- include/mrdocs/Metadata/DomCorpus.hpp | 36 ++ include/mrdocs/Metadata/Symbol/Function.hpp | 28 ++ include/mrdocs/Metadata/Symbol/Record.hpp | 14 + .../generator/adoc/partials/symbol.adoc.hbs | 10 + .../common/partials/symbol/tranche.hbs | 17 +- .../generator/html/partials/symbol.html.hbs | 12 + src/lib/Metadata/DomCorpus.cpp | 159 ++++++++ src/lib/Support/Handlebars.cpp | 54 +++ .../extract-friends/extract-friends.adoc | 10 +- .../extract-friends/extract-friends.html | 19 +- .../extract-friends/no-extract-friends.adoc | 10 +- .../extract-friends/no-extract-friends.html | 19 +- .../sort-namespace-members-by-location.adoc | 33 +- .../sort-namespace-members-by-location.html | 54 ++- .../sort-namespace-members-by-name.adoc | 33 +- .../sort-namespace-members-by-name.html | 54 ++- .../config/sort/sort-members.adoc | 33 +- .../config/sort/sort-members.html | 54 ++- .../golden-tests/config/sort/unordered.adoc | 33 +- .../golden-tests/config/sort/unordered.html | 54 ++- .../symbol-type/nested-private-template.adoc | 10 +- .../symbol-type/nested-private-template.html | 19 +- .../javadoc/copydoc/template-arguments.adoc | 32 +- .../javadoc/copydoc/template-arguments.html | 38 +- .../golden-tests/symbols/function/sfinae.adoc | 24 +- .../golden-tests/symbols/function/sfinae.html | 36 +- .../spec-mem-implicit-instantiation.adoc | 46 ++- .../spec-mem-implicit-instantiation.html | 78 +++- .../symbols/guide/explicit-deduct-guide.adoc | 23 +- .../symbols/guide/explicit-deduct-guide.html | 36 +- .../record/class-template-array-spec.adoc | 11 +- .../record/class-template-array-spec.html | 19 +- .../record/class-template-partial-spec.adoc | 12 +- .../record/class-template-partial-spec.html | 21 +- .../symbols/record/class-template-spec.adoc | 36 +- .../symbols/record/class-template-spec.html | 59 ++- .../class-template-specializations-1.adoc | 224 ++++++----- .../class-template-specializations-1.html | 352 +++++++++++------- .../class-template-specializations-2.adoc | 64 +++- .../class-template-specializations-2.html | 113 +++++- .../class-template-specializations-3.adoc | 100 +++-- .../class-template-specializations-3.html | 179 +++++++-- .../template-specialization-inheritance.adoc | 16 +- .../template-specialization-inheritance.html | 23 +- .../symbols/typedef/decay-to-primary.adoc | 12 +- .../symbols/typedef/decay-to-primary.html | 19 +- .../implicit-instantiation-member-ref.adoc | 20 +- .../implicit-instantiation-member-ref.html | 36 +- .../using/using-alias-template-dependent.adoc | 10 +- .../using/using-alias-template-dependent.html | 17 +- .../templates/c_mct_expl_inline.adoc | 10 +- .../templates/c_mct_expl_inline.html | 19 +- .../templates/c_mct_expl_outside.adoc | 10 +- .../templates/c_mct_expl_outside.html | 19 +- .../templates/c_mft_expl_inline.adoc | 9 + .../templates/c_mft_expl_inline.html | 16 + .../templates/c_mft_expl_outside.adoc | 9 + .../templates/c_mft_expl_outside.html | 16 + .../golden-tests/templates/ct_expl.adoc | 10 +- .../golden-tests/templates/ct_expl.html | 19 +- .../templates/ct_mc_expl_outside.adoc | 10 +- .../templates/ct_mc_expl_outside.html | 19 +- .../templates/ct_mct_expl_inline.adoc | 10 +- .../templates/ct_mct_expl_inline.html | 19 +- .../templates/ct_mct_expl_outside.adoc | 20 +- .../templates/ct_mct_expl_outside.html | 38 +- .../templates/ct_mf_expl_outside.adoc | 10 +- .../templates/ct_mf_expl_outside.html | 19 +- .../templates/ct_mft_expl_inline.adoc | 9 + .../templates/ct_mft_expl_inline.html | 16 + .../templates/ct_mft_expl_outside.adoc | 19 +- .../templates/ct_mft_expl_outside.html | 35 +- .../golden-tests/templates/ft_expl.adoc | 9 + .../golden-tests/templates/ft_expl.html | 16 + 74 files changed, 2319 insertions(+), 488 deletions(-) diff --git a/include/mrdocs/Metadata/DomCorpus.hpp b/include/mrdocs/Metadata/DomCorpus.hpp index 71cde66fc5..20071d97bb 100644 --- a/include/mrdocs/Metadata/DomCorpus.hpp +++ b/include/mrdocs/Metadata/DomCorpus.hpp @@ -104,6 +104,42 @@ class MRDOCS_DECL virtual dom::Value getDocComment(DocComment const& jd) const; + + /** Check whether a symbol is extracted in Regular mode. + + @return `false` when the ID is invalid, the symbol is not in + the corpus, or its extraction mode is anything other than + @ref ExtractionMode::Regular. Used to decide whether a + symbol's documentation page will actually be rendered. + + @param id The symbol to check. + */ + bool + isRegular(SymbolID const& id) const; + + /** Return specializations of a primary class or function template. + + Walks the corpus once on first access and caches an inverse + index from primary ID to the list of specialization IDs. + + @param primary The ID of the primary template. + @return A `dom::Array` of resolved symbol objects, or an + empty array when the primary has no specializations. + */ + dom::Value + getSpecializations(SymbolID const& primary) const; + + /** Return the deduction guides for a primary class template. + + Walks the corpus once on first access and caches an inverse + index from deduced primary ID to the list of guide IDs. + + @param primary The ID of the primary class template. + @return A `dom::Array` of resolved guide objects, or an + empty array when the primary has no deduction guides. + */ + dom::Value + getDeductionGuides(SymbolID const& primary) const; }; /** Return a list of the parent symbols of the specified Info. diff --git a/include/mrdocs/Metadata/Symbol/Function.hpp b/include/mrdocs/Metadata/Symbol/Function.hpp index b3786a9f5c..9e36ce909b 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 @@ -164,6 +165,33 @@ MRDOCS_DESCRIBE_STRUCT( RefQualifier, Explicit, Attributes, FunctionObjectImpl) ) +/** Map a FunctionSymbol to a dom::Object with computed isSpecialization. + @param io The IO object to map into. + @param I The FunctionSymbol to map. + @param domCorpus The DomCorpus context. +*/ +template +void +tag_invoke( + dom::LazyObjectMapTag, + IO& io, + FunctionSymbol const& I, + DomCorpus const* domCorpus) +{ + mapReflectedType(io, I, domCorpus); + // True only when this specialization's primary will be rendered: + // an orphan specialization (primary excluded) stays in the parent's + // listing so it remains reachable from the index. + io.map( + "isSpecialization", + I.Template && + I.Template->specializationKind() != TemplateSpecKind::Primary && + domCorpus->isRegular(I.Template->Primary)); + io.defer("specializations", [&I, domCorpus] { + return domCorpus->getSpecializations(I.id); + }); +} + /** Map a vector of parameters to a @ref dom::Value object. @param v The output parameter to receive the dom::Value. diff --git a/include/mrdocs/Metadata/Symbol/Record.hpp b/include/mrdocs/Metadata/Symbol/Record.hpp index c173fd7407..aac78df211 100644 --- a/include/mrdocs/Metadata/Symbol/Record.hpp +++ b/include/mrdocs/Metadata/Symbol/Record.hpp @@ -130,6 +130,20 @@ tag_invoke( { mapReflectedType(io, I, domCorpus); io.map("defaultAccess", std::string(getDefaultAccessString(I.KeyKind))); + // True only when this specialization's primary will be rendered: + // an orphan specialization (primary excluded) stays in the parent's + // listing so it remains reachable from the index. + io.map( + "isSpecialization", + I.Template && + I.Template->specializationKind() != TemplateSpecKind::Primary && + domCorpus->isRegular(I.Template->Primary)); + io.defer("specializations", [&I, domCorpus] { + return domCorpus->getSpecializations(I.id); + }); + io.defer("deductionGuides", [&I, domCorpus] { + return domCorpus->getDeductionGuides(I.id); + }); } /** View all record members across access levels. diff --git a/share/mrdocs/addons/generator/adoc/partials/symbol.adoc.hbs b/share/mrdocs/addons/generator/adoc/partials/symbol.adoc.hbs index 1f3290f23f..cc97cfe403 100644 --- a/share/mrdocs/addons/generator/adoc/partials/symbol.adoc.hbs +++ b/share/mrdocs/addons/generator/adoc/partials/symbol.adoc.hbs @@ -145,6 +145,16 @@ {{/each}} |=== +{{/if}} +{{! Specializations of this primary template }} +{{#if symbol.specializations}} +{{>symbol/members-table members=symbol.specializations title="Specializations"}} + +{{/if}} +{{! Deduction guides for this class template }} +{{#if symbol.deductionGuides}} +{{>symbol/members-table members=symbol.deductionGuides title="Deduction Guides"}} + {{/if}} {{! Using symbols }} {{#if symbol.shadowDeclarations}} diff --git a/share/mrdocs/addons/generator/common/partials/symbol/tranche.hbs b/share/mrdocs/addons/generator/common/partials/symbol/tranche.hbs index 7611761518..9a1d51da7e 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,21 +21,20 @@ {{#if is-namespace}} {{>symbol/members-table members=tranche.namespaces title="Namespaces"}} {{>symbol/members-table members=tranche.namespaceAliases title="Namespace Aliases"}} -{{>symbol/members-table members=(concat tranche.records tranche.typedefs) title=(concat (select label (concat label " ") "") "Types")}} +{{>symbol/members-table members=(concat (reject_by tranche.records "isSpecialization") tranche.typedefs) title=(concat (select label (concat label " ") "") "Types")}} {{>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 "isSpecialization") 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=(concat tranche.records tranche.typedefs) title=(concat (select label (concat label " ") "") "Types")}} +{{>symbol/members-table members=(concat (reject_by tranche.records "isSpecialization") tranche.typedefs) title=(concat (select label (concat label " ") "") "Types")}} {{>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 "isSpecialization") title=(concat (select label (concat label " ") "") "Member Functions")}} +{{>symbol/members-table members=(reject_by tranche.staticFunctions "isSpecialization") 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/share/mrdocs/addons/generator/html/partials/symbol.html.hbs b/share/mrdocs/addons/generator/html/partials/symbol.html.hbs index acab90eb12..d821439979 100644 --- a/share/mrdocs/addons/generator/html/partials/symbol.html.hbs +++ b/share/mrdocs/addons/generator/html/partials/symbol.html.hbs @@ -192,6 +192,18 @@ {{/if}} +{{! Specializations of this primary template }} +{{#if symbol.specializations}} +
+{{>symbol/members-table members=symbol.specializations title="Specializations"}} +
+{{/if}} +{{! Deduction guides for this class template }} +{{#if symbol.deductionGuides}} +
+{{>symbol/members-table members=symbol.deductionGuides title="Deduction Guides"}} +
+{{/if}} {{! Using symbols }} {{#if symbol.shadowDeclarations}}
diff --git a/src/lib/Metadata/DomCorpus.cpp b/src/lib/Metadata/DomCorpus.cpp index 62af85736a..a98a144dd4 100644 --- a/src/lib/Metadata/DomCorpus.cpp +++ b/src/lib/Metadata/DomCorpus.cpp @@ -6,6 +6,7 @@ // Copyright (c) 2023 Vinnie Falco (vinnie.falco@gmail.com) // Copyright (c) 2023 Krystian Stasiowski (sdkrystian@gmail.com) // Copyright (c) 2024 Alan de Freitas (alandefreitas@gmail.com) +// Copyright (c) 2026 Gennaro Prota (gennaro.prota@gmail.com) // // Official repository: https://github.com/cppalliance/mrdocs // @@ -15,10 +16,38 @@ #include #include #include +#include #include +#include +#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) + class DomCorpus::Impl { using value_type = std::weak_ptr; @@ -26,6 +55,96 @@ class DomCorpus::Impl DomCorpus const& domCorpus_; Corpus const& corpus_; + // Inverse indices from primary template ID to the IDs of the + // symbols that reference it as their primary. Built lazily on + // first access; immutable thereafter. + mutable std::once_flag indexFlag_; + mutable std::unordered_map> + specializationsByPrimary_; + mutable std::unordered_map> + deductionGuidesByPrimary_; + + void + buildIndex() const + { + for (Symbol const& I : corpus_) + { + if (I.Extraction != ExtractionMode::Regular) + { + continue; + } + if (I.isRecord()) + { + RecordSymbol const& record = I.asRecord(); + if (record.Template + && record.Template->Primary != SymbolID::invalid) + { + specializationsByPrimary_[record.Template->Primary] + .push_back(record.id); + } + } + else if (I.isFunction()) + { + FunctionSymbol const& func = I.asFunction(); + if (func.Template + && func.Template->Primary != SymbolID::invalid) + { + specializationsByPrimary_[func.Template->Primary] + .push_back(func.id); + } + } + else if (I.isGuide()) + { + GuideSymbol const& guide = I.asGuide(); + SymbolID const primary = deducedPrimaryID(guide); + if (primary != SymbolID::invalid) + { + deductionGuidesByPrimary_[primary].push_back(guide.id); + } + } + } + sortByReferentName(specializationsByPrimary_); + sortByReferentName(deductionGuidesByPrimary_); + } + + void + sortByReferentName( + std::unordered_map>& index) const + { + auto byName = [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 (std::vector& ids : std::views::values(index)) + { + std::ranges::sort(ids, byName); + } + } + + std::vector const& + lookup( + std::unordered_map> const& index, + SymbolID const& primary) const + { + static std::vector const empty; + auto const it = index.find(primary); + if (it == index.end()) + { + return empty; + } + return it->second; + } + public: Impl( DomCorpus const& domCorpus, @@ -56,6 +175,20 @@ class DomCorpus::Impl MRDOCS_CHECK_OR(I, {}); return create(*I); } + + std::vector const& + getSpecializationIDs(SymbolID const& primary) const + { + std::call_once(indexFlag_, [this] { buildIndex(); }); + return lookup(specializationsByPrimary_, primary); + } + + std::vector const& + getDeductionGuideIDs(SymbolID const& primary) const + { + std::call_once(indexFlag_, [this] { buildIndex(); }); + return lookup(deductionGuidesByPrimary_, primary); + } }; DomCorpus:: @@ -105,6 +238,32 @@ getDocComment(DocComment const&) const return nullptr; } +bool +DomCorpus:: +isRegular(SymbolID const& id) const +{ + if (!id) + { + return false; + } + Symbol const* sym = getCorpus().find(id); + return sym && sym->Extraction == ExtractionMode::Regular; +} + +dom::Value +DomCorpus:: +getSpecializations(SymbolID const& primary) const +{ + return dom::LazyArray(impl_->getSpecializationIDs(primary), this); +} + +dom::Value +DomCorpus:: +getDeductionGuides(SymbolID const& primary) const +{ + return dom::LazyArray(impl_->getDeductionGuideIDs(primary), this); +} + dom::Array getParents(DomCorpus const& C, Symbol const& I) { diff --git a/src/lib/Support/Handlebars.cpp b/src/lib/Support/Handlebars.cpp index 41ccb9bf72..ce2e5a22e4 100644 --- a/src/lib/Support/Handlebars.cpp +++ b/src/lib/Support/Handlebars.cpp @@ -6481,6 +6481,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.adoc b/test-files/golden-tests/config/extract-friends/extract-friends.adoc index 8176f9d0dc..8ccee7af63 100644 --- a/test-files/golden-tests/config/extract-friends/extract-friends.adoc +++ b/test-files/golden-tests/config/extract-friends/extract-friends.adoc @@ -29,7 +29,6 @@ |=== | Name | link:#std-hash-03[`hash`] -| link:#std-hash-08[`hash<A>`] |=== [#std-hash-03] @@ -45,6 +44,15 @@ template<class T> class hash; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#std-hash-08[`hash<A>`] +|=== + + [#std-hash-08] == link:#std[std]::link:#std-hash-03[hash]<link:#A[A]> diff --git a/test-files/golden-tests/config/extract-friends/extract-friends.html b/test-files/golden-tests/config/extract-friends/extract-friends.html index 3d53e7cd99..6554dcc776 100644 --- a/test-files/golden-tests/config/extract-friends/extract-friends.html +++ b/test-files/golden-tests/config/extract-friends/extract-friends.html @@ -55,8 +55,7 @@

-hash -hash<A> +hash @@ -76,6 +75,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
hash<A>
+ +
diff --git a/test-files/golden-tests/config/extract-friends/no-extract-friends.adoc b/test-files/golden-tests/config/extract-friends/no-extract-friends.adoc index 0b50695f0a..17510a1167 100644 --- a/test-files/golden-tests/config/extract-friends/no-extract-friends.adoc +++ b/test-files/golden-tests/config/extract-friends/no-extract-friends.adoc @@ -29,7 +29,6 @@ |=== | Name | link:#std-hash-03[`hash`] -| link:#std-hash-08[`hash<A>`] |=== [#std-hash-03] @@ -45,6 +44,15 @@ template<class T> class hash; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#std-hash-08[`hash<A>`] +|=== + + [#std-hash-08] == link:#std[std]::link:#std-hash-03[hash]<link:#A[A]> diff --git a/test-files/golden-tests/config/extract-friends/no-extract-friends.html b/test-files/golden-tests/config/extract-friends/no-extract-friends.html index 0d017217ca..2990afd818 100644 --- a/test-files/golden-tests/config/extract-friends/no-extract-friends.html +++ b/test-files/golden-tests/config/extract-friends/no-extract-friends.html @@ -55,8 +55,7 @@

-hash -hash<A> +hash @@ -76,6 +75,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
hash<A>
+ +
diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.adoc b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.adoc index c88bd28d08..1c212a4b92 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.adoc +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.adoc @@ -11,11 +11,7 @@ | Name | link:#D[`D`] | link:#C-0f[`C`] -| link:#C-0d[`C<int, char>`] -| link:#C-03[`C<int>`] | link:#B-0b[`B`] -| link:#B-04[`B<int, char>`] -| link:#B-05[`B<int, U>`] | link:#A[`A`] | link:#Z[`Z`] |=== @@ -66,6 +62,16 @@ template< struct C; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#C-03[`C<int>`] +| link:#C-0d[`C<int, char>`] +|=== + + [#C-0d] == link:#C-0f[C]<int, char> @@ -107,6 +113,16 @@ template< struct B; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#B-04[`B<int, char>`] +| link:#B-05[`B<int, U>`] +|=== + + [#B-04] == link:#B-0b[B]<int, char> @@ -525,6 +541,15 @@ g( T); ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#g-0e4[`g<int>`] +|=== + + [#g-0e4] == link:#g-03c[g]<int> diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.html b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.html index 0ea675a24c..179a035ea2 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.html +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-location.html @@ -23,11 +23,7 @@

D C -C<int, char> -C<int> B -B<int, char> -B<int, U> A Z @@ -85,6 +81,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
C<int>
C<int, char>
+ +
@@ -135,6 +148,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
B<int, char>
B<int, U>
+ +
@@ -592,6 +622,22 @@

T, T, T); +

+
+

+Specializations

+ + + + + + + + + + +
Name
g<int>
+
diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.adoc b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.adoc index a5c37427ed..576529810e 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.adoc +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.adoc @@ -11,11 +11,7 @@ | Name | link:#A[`A`] | link:#B-0b[`B`] -| link:#B-04[`B<int, char>`] -| link:#B-05[`B<int, U>`] | link:#C-0f[`C`] -| link:#C-03[`C<int>`] -| link:#C-0d[`C<int, char>`] | link:#D[`D`] | link:#Z[`Z`] |=== @@ -80,6 +76,16 @@ template< struct B; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#B-04[`B<int, char>`] +| link:#B-05[`B<int, U>`] +|=== + + [#B-04] == link:#B-0b[B]<int, char> @@ -121,6 +127,16 @@ template< struct C; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#C-03[`C<int>`] +| link:#C-0d[`C<int, char>`] +|=== + + [#C-03] == link:#C-0f[C]<int> @@ -595,6 +611,15 @@ g( T); ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#g-0e4[`g<int>`] +|=== + + [#g-0e4] == link:#g-03c[g]<int> diff --git a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.html b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.html index c73dd3066f..29fe242c29 100644 --- a/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.html +++ b/test-files/golden-tests/config/sort-namespace-members-by/sort-namespace-members-by-name.html @@ -23,11 +23,7 @@

A B -B<int, char> -B<int, U> C -C<int> -C<int, char> D Z @@ -102,6 +98,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
B<int, char>
B<int, U>
+ +
@@ -152,6 +165,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
C<int>
C<int, char>
+ +
@@ -667,6 +697,22 @@

T, T, T); +

+
+

+Specializations

+ + + + + + + + + + +
Name
g<int>
+
diff --git a/test-files/golden-tests/config/sort/sort-members.adoc b/test-files/golden-tests/config/sort/sort-members.adoc index 162873f655..b4ebe01f59 100644 --- a/test-files/golden-tests/config/sort/sort-members.adoc +++ b/test-files/golden-tests/config/sort/sort-members.adoc @@ -11,11 +11,7 @@ | Name | link:#A[`A`] | link:#B-0b[`B`] -| link:#B-04[`B<int, char>`] -| link:#B-05[`B<int, U>`] | link:#C-0f[`C`] -| link:#C-03[`C<int>`] -| link:#C-0d[`C<int, char>`] | link:#D[`D`] | link:#Z[`Z`] |=== @@ -80,6 +76,16 @@ template< struct B; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#B-04[`B<int, char>`] +| link:#B-05[`B<int, U>`] +|=== + + [#B-04] == link:#B-0b[B]<int, char> @@ -121,6 +127,16 @@ template< struct C; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#C-03[`C<int>`] +| link:#C-0d[`C<int, char>`] +|=== + + [#C-03] == link:#C-0f[C]<int> @@ -595,6 +611,15 @@ g( T); ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#g-0e4[`g<int>`] +|=== + + [#g-0e4] == link:#g-03c[g]<int> diff --git a/test-files/golden-tests/config/sort/sort-members.html b/test-files/golden-tests/config/sort/sort-members.html index b851359ade..794b7485c3 100644 --- a/test-files/golden-tests/config/sort/sort-members.html +++ b/test-files/golden-tests/config/sort/sort-members.html @@ -23,11 +23,7 @@

A B -B<int, char> -B<int, U> C -C<int> -C<int, char> D Z @@ -102,6 +98,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
B<int, char>
B<int, U>
+ +
@@ -152,6 +165,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
C<int>
C<int, char>
+ +
@@ -667,6 +697,22 @@

T, T, T); +

+
+

+Specializations

+ + + + + + + + + + +
Name
g<int>
+
diff --git a/test-files/golden-tests/config/sort/unordered.adoc b/test-files/golden-tests/config/sort/unordered.adoc index ec08d339ac..da1275f267 100644 --- a/test-files/golden-tests/config/sort/unordered.adoc +++ b/test-files/golden-tests/config/sort/unordered.adoc @@ -11,11 +11,7 @@ | Name | link:#D[`D`] | link:#C-0f[`C`] -| link:#C-0d[`C<int, char>`] -| link:#C-03[`C<int>`] | link:#B-0b[`B`] -| link:#B-04[`B<int, char>`] -| link:#B-05[`B<int, U>`] | link:#A[`A`] | link:#Z[`Z`] |=== @@ -66,6 +62,16 @@ template< struct C; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#C-03[`C<int>`] +| link:#C-0d[`C<int, char>`] +|=== + + [#C-0d] == link:#C-0f[C]<int, char> @@ -107,6 +113,16 @@ template< struct B; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#B-04[`B<int, char>`] +| link:#B-05[`B<int, U>`] +|=== + + [#B-04] == link:#B-0b[B]<int, char> @@ -620,6 +636,15 @@ g( T); ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#g-0e4[`g<int>`] +|=== + + [#g-0e4] == link:#g-03c[g]<int> diff --git a/test-files/golden-tests/config/sort/unordered.html b/test-files/golden-tests/config/sort/unordered.html index 262308744c..c584babb0f 100644 --- a/test-files/golden-tests/config/sort/unordered.html +++ b/test-files/golden-tests/config/sort/unordered.html @@ -23,11 +23,7 @@

D C -C<int, char> -C<int> B -B<int, char> -B<int, U> A Z @@ -85,6 +81,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
C<int>
C<int, char>
+ +
@@ -135,6 +148,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
B<int, char>
B<int, U>
+ +
@@ -724,6 +754,22 @@

T, T, T); +

+
+

+Specializations

+ + + + + + + + + + +
Name
g<int>
+
diff --git a/test-files/golden-tests/filters/symbol-type/nested-private-template.adoc b/test-files/golden-tests/filters/symbol-type/nested-private-template.adoc index 563aac48d7..555b6779ac 100644 --- a/test-files/golden-tests/filters/symbol-type/nested-private-template.adoc +++ b/test-files/golden-tests/filters/symbol-type/nested-private-template.adoc @@ -31,7 +31,6 @@ class range; |=== | Name | link:#range-impl-0e[`impl`] -| link:#range-impl-00[`impl<R, false>`] |=== [#range-impl-0e] @@ -49,6 +48,15 @@ template< struct impl; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#range-impl-00[`impl<R, false>`] +|=== + + [#range-impl-00] == link:#range[range]::link:#range-impl-0e[impl]<R, false> diff --git a/test-files/golden-tests/filters/symbol-type/nested-private-template.html b/test-files/golden-tests/filters/symbol-type/nested-private-template.html index d60b83ee22..225880b0cf 100644 --- a/test-files/golden-tests/filters/symbol-type/nested-private-template.html +++ b/test-files/golden-tests/filters/symbol-type/nested-private-template.html @@ -51,8 +51,7 @@

-impl -impl<R, false> +impl @@ -74,6 +73,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
impl<R, false>
+ +
diff --git a/test-files/golden-tests/javadoc/copydoc/template-arguments.adoc b/test-files/golden-tests/javadoc/copydoc/template-arguments.adoc index afd606c725..ec71d0cd74 100644 --- a/test-files/golden-tests/javadoc/copydoc/template-arguments.adoc +++ b/test-files/golden-tests/javadoc/copydoc/template-arguments.adoc @@ -22,16 +22,8 @@ | Name| Description | link:#A-B-08[`B`] | Main class template for B. -| link:#A-B-09[`B<int>`] -| Specialization of B for int. -| link:#A-B-0c[`B<int, 2>`] -| Specialization of B for int with value 2. | link:#A-C-05[`C`] | Main class template for C. -| link:#A-C-0f[`C<D, true>`] -| Specialization of C for D with true. -| link:#A-C-0c[`C<int, true>`] -| Specialization of C for int with true. | link:#A-D[`D`] | Helper struct D. | link:#A-BInt[`BInt`] @@ -175,6 +167,18 @@ template< struct B; ---- +=== Specializations + +[cols="1,4"] +|=== +| Name| Description +| link:#A-B-09[`B<int>`] +| Specialization of B for int. +| link:#A-B-0c[`B<int, 2>`] +| Specialization of B for int with value 2. +|=== + + === Template Parameters [cols="1,4"] @@ -234,6 +238,18 @@ template< struct C; ---- +=== Specializations + +[cols="1,4"] +|=== +| Name| Description +| link:#A-C-0c[`C<int, true>`] +| Specialization of C for int with true. +| link:#A-C-0f[`C<D, true>`] +| Specialization of C for D with true. +|=== + + === Template Parameters [cols="1,4"] diff --git a/test-files/golden-tests/javadoc/copydoc/template-arguments.html b/test-files/golden-tests/javadoc/copydoc/template-arguments.html index 66476702e6..6ceaae2524 100644 --- a/test-files/golden-tests/javadoc/copydoc/template-arguments.html +++ b/test-files/golden-tests/javadoc/copydoc/template-arguments.html @@ -42,11 +42,7 @@

B Main class template for B. -B<int> Specialization of B for int. -B<int, 2> Specialization of B for int with value 2. C Main class template for C. -C<D, true> Specialization of C for D with true. -C<int, true> Specialization of C for int with true. D Helper struct D. BInt Specialization of B for int. BInt2 Specialization of B for int with value 2. @@ -216,6 +212,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
NameDescription
B<int> Specialization of B for int.
B<int, 2> Specialization of B for int with value 2.
+ +

Template Parameters

@@ -297,6 +310,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
NameDescription
C<int, true> Specialization of C for int with true.
C<D, true> Specialization of C for D with true.
+ +

Template Parameters

diff --git a/test-files/golden-tests/symbols/function/sfinae.adoc b/test-files/golden-tests/symbols/function/sfinae.adoc index b99b0f67cd..fbe0a9a425 100644 --- a/test-files/golden-tests/symbols/function/sfinae.adoc +++ b/test-files/golden-tests/symbols/function/sfinae.adoc @@ -19,12 +19,8 @@ | Name| Description | link:#A-09[`A`] | The partial specialization of A is enabled via a template parameter -| link:#A-07[`A<T>`] -| Specialization for integral types | link:#S-02[`S`] | SFINAE with std::void_t -| link:#S-08[`S<T, std::void_t<T::a::b>>`] -| SFINAE with std::void_t |=== === Functions @@ -104,6 +100,16 @@ template< class A; ---- +=== Specializations + +[cols="1,4"] +|=== +| Name| Description +| link:#A-07[`A<T>`] +| Specialization for integral types +|=== + + [#A-07] == link:#A-09[A]<T> @@ -145,6 +151,16 @@ struct S; | link:#S-02-store[`store`] |=== +=== Specializations + +[cols="1,4"] +|=== +| Name| Description +| link:#S-08[`S<T, std::void_t<T::a::b>>`] +| SFINAE with std::void_t +|=== + + [#S-02-store] == link:#S-02[S]::store diff --git a/test-files/golden-tests/symbols/function/sfinae.html b/test-files/golden-tests/symbols/function/sfinae.html index ef5fc1c63c..dda4bdf5e3 100644 --- a/test-files/golden-tests/symbols/function/sfinae.html +++ b/test-files/golden-tests/symbols/function/sfinae.html @@ -36,9 +36,7 @@

A The partial specialization of A is enabled via a template parameter -A<T> Specialization for integral types -S SFINAE with std::void_t -S<T, std::void_t<T::a::b>> SFINAE with std::void_t +S SFINAE with std::void_t @@ -136,6 +134,22 @@

+
+

+Specializations

+ + + + + + + + + + +
NameDescription
A<T> Specialization for integral types
+ +
@@ -191,6 +205,22 @@

+
+

+Specializations

+ + + + + + + + + + +
NameDescription
S<T, std::void_t<T::a::b>> SFINAE with std::void_t
+ +

diff --git a/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.adoc b/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.adoc index e5bf2b59b3..20d9edeac7 100644 --- a/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.adoc +++ b/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.adoc @@ -10,9 +10,6 @@ |=== | Name | link:#A-0e[`A`] -| link:#A-0f[`A<bool>`] -| link:#A-000[`A<int>`] -| link:#A-00b[`A<short>`] | link:#D[`D`] |=== @@ -46,6 +43,17 @@ struct A; | link:#A-0e-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-000[`A<int>`] +| link:#A-00b[`A<short>`] +| link:#A-0f[`A<bool>`] +|=== + + [#A-0e-B] == link:#A-0e[A]::B @@ -67,6 +75,15 @@ struct B; | link:#A-0e-B-g[`g`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-000-B-09[`B<long>`] +|=== + + [#A-0e-B-g] == link:#A-0e[A]::link:#A-0e-B[B]::g @@ -101,6 +118,16 @@ struct C; | link:#A-0e-C-h[`h`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-0f-C-01[`C<double*>`] +| link:#A-0f-C-0c[`C<U*>`] +|=== + + [#A-0e-C-h] == link:#A-0e[A]::link:#A-0e-C[C]::h @@ -147,8 +174,6 @@ struct link:#A-0e[A]<bool>; | Name | link:#A-0f-B[`B`] | link:#A-0f-C-00[`C`] -| link:#A-0f-C-01[`C<double*>`] -| link:#A-0f-C-0c[`C<U*>`] |=== === Member Functions @@ -285,7 +310,6 @@ struct link:#A-0e[A]<int>; |=== | Name | link:#A-000-B-03[`B`] -| link:#A-000-B-09[`B<long>`] | link:#A-000-C[`C`] |=== @@ -478,7 +502,6 @@ struct D; |=== | Name | link:#D-E-0e[`E`] -| link:#D-E-0d[`E<int>`] |=== [#D-E-0e] @@ -502,6 +525,15 @@ struct E; | link:#D-E-0e-k[`k`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#D-E-0d[`E<int>`] +|=== + + [#D-E-0e-k] == link:#D[D]::link:#D-E-0e[E]::k diff --git a/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.html b/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.html index 113eab4aaf..a87f7f4acf 100644 --- a/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.html +++ b/test-files/golden-tests/symbols/function/spec-mem-implicit-instantiation.html @@ -22,9 +22,6 @@

A -A<bool> -A<int> -A<short> D @@ -74,6 +71,24 @@

+
+

+Specializations

+ + + + + + + + + + + + +
Name
A<int>
A<short>
A<bool>
+ +

@@ -104,6 +119,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
B<long>
+ +

@@ -148,6 +179,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
C<double*>
C<U*>
+ +

@@ -201,9 +249,7 @@

B -C -C<double*> -C<U*> +C @@ -382,7 +428,6 @@

B -B<long> C @@ -635,8 +680,7 @@

-E -E<int> +E @@ -672,6 +716,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
E<int>
+ +

diff --git a/test-files/golden-tests/symbols/guide/explicit-deduct-guide.adoc b/test-files/golden-tests/symbols/guide/explicit-deduct-guide.adoc index 2551854f2e..3bb3d530dd 100644 --- a/test-files/golden-tests/symbols/guide/explicit-deduct-guide.adoc +++ b/test-files/golden-tests/symbols/guide/explicit-deduct-guide.adoc @@ -12,17 +12,6 @@ | link:#X-0e[`X`] |=== -=== Deduction Guides - -[cols=1] -|=== -| Name -| link:#X-0d[`X<0>`] -| link:#X-00[`X<0>`] -| link:#X-0b[`X<0>`] -| link:#X-06[`X<0>`] -|=== - [#X-0e] == X @@ -36,6 +25,18 @@ template<int> struct X; ---- +=== Deduction Guides + +[cols=1] +|=== +| Name +| link:#X-00[`X<0>`] +| link:#X-06[`X<0>`] +| link:#X-0b[`X<0>`] +| link:#X-0d[`X<0>`] +|=== + + [#X-0d] == link:#X-0e[X<0>] diff --git a/test-files/golden-tests/symbols/guide/explicit-deduct-guide.html b/test-files/golden-tests/symbols/guide/explicit-deduct-guide.html index 27a414b292..8655ee16b6 100644 --- a/test-files/golden-tests/symbols/guide/explicit-deduct-guide.html +++ b/test-files/golden-tests/symbols/guide/explicit-deduct-guide.html @@ -25,23 +25,6 @@

-

-Deduction Guides

- - - - - - - - - - - - - -
Name
X<0>
X<0>
X<0>
X<0>
-
@@ -58,6 +41,25 @@

+
+

+Deduction Guides

+ + + + + + + + + + + + + +
Name
X<0>
X<0>
X<0>
X<0>
+ +
diff --git a/test-files/golden-tests/symbols/record/class-template-array-spec.adoc b/test-files/golden-tests/symbols/record/class-template-array-spec.adoc index 697e57f602..3fffc456a8 100644 --- a/test-files/golden-tests/symbols/record/class-template-array-spec.adoc +++ b/test-files/golden-tests/symbols/record/class-template-array-spec.adoc @@ -11,8 +11,6 @@ | Name| Description | link:#A-000[`A`] | Issue #1172. -| link:#A-004[`A<T[N], void, void>`] -| |=== [#A-000] @@ -33,6 +31,15 @@ template< struct A; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-004[`A<T[N], void, void>`] +|=== + + [#A-004] == link:#A-000[A]<T[N], void, void> diff --git a/test-files/golden-tests/symbols/record/class-template-array-spec.html b/test-files/golden-tests/symbols/record/class-template-array-spec.html index af68085518..33431669c4 100644 --- a/test-files/golden-tests/symbols/record/class-template-array-spec.html +++ b/test-files/golden-tests/symbols/record/class-template-array-spec.html @@ -21,8 +21,7 @@

-A Issue #1172. -A<T[N], void, void> +A Issue #1172. @@ -48,6 +47,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
A<T[N], void, void>
+ +
diff --git a/test-files/golden-tests/symbols/record/class-template-partial-spec.adoc b/test-files/golden-tests/symbols/record/class-template-partial-spec.adoc index 46ad3249d9..5fc5072a47 100644 --- a/test-files/golden-tests/symbols/record/class-template-partial-spec.adoc +++ b/test-files/golden-tests/symbols/record/class-template-partial-spec.adoc @@ -31,8 +31,6 @@ struct A; |=== | Name | link:#A-B-0a[`B`] -| link:#A-B-04[`B<T, long>`] -| link:#A-B-06[`B<U*, T>`] |=== [#A-B-0a] @@ -50,6 +48,16 @@ template< struct B; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-B-04[`B<T, long>`] +| link:#A-B-06[`B<U*, T>`] +|=== + + [#A-B-04] == link:#A[A]::link:#A-B-0a[B]<T, long> diff --git a/test-files/golden-tests/symbols/record/class-template-partial-spec.html b/test-files/golden-tests/symbols/record/class-template-partial-spec.html index eeabaa412f..651b0f3663 100644 --- a/test-files/golden-tests/symbols/record/class-template-partial-spec.html +++ b/test-files/golden-tests/symbols/record/class-template-partial-spec.html @@ -49,9 +49,7 @@

-B -B<T, long> -B<U*, T> +B @@ -75,6 +73,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
B<T, long>
B<U*, T>
+ +
diff --git a/test-files/golden-tests/symbols/record/class-template-spec.adoc b/test-files/golden-tests/symbols/record/class-template-spec.adoc index 756f954d0e..ed47ebfb2b 100644 --- a/test-files/golden-tests/symbols/record/class-template-spec.adoc +++ b/test-files/golden-tests/symbols/record/class-template-spec.adoc @@ -10,14 +10,8 @@ |=== | Name | link:#A-0e[`A`] -| link:#A-00[`A<int>`] -| link:#A-0c[`A<long>`] | link:#B-00[`B`] -| link:#B-06[`B<T&>`] -| link:#B-07[`B<T*>`] | link:#C-0f[`C`] -| link:#C-0a[`C<int, int>`] -| link:#C-0e[`C<T*, int>`] |=== [#A-0e] @@ -41,6 +35,16 @@ struct A; | link:#A-0e-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00[`A<int>`] +| link:#A-0c[`A<long>`] +|=== + + [#A-0e-f] == link:#A-0e[A]::f @@ -143,6 +147,16 @@ struct B; | link:#B-00-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#B-06[`B<T&>`] +| link:#B-07[`B<T*>`] +|=== + + [#B-00-f] == link:#B-00[B]::f @@ -247,6 +261,16 @@ struct C; | link:#C-0f-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#C-0a[`C<int, int>`] +| link:#C-0e[`C<T*, int>`] +|=== + + [#C-0f-f] == link:#C-0f[C]::f diff --git a/test-files/golden-tests/symbols/record/class-template-spec.html b/test-files/golden-tests/symbols/record/class-template-spec.html index e7486c02e7..353090e9a4 100644 --- a/test-files/golden-tests/symbols/record/class-template-spec.html +++ b/test-files/golden-tests/symbols/record/class-template-spec.html @@ -22,14 +22,8 @@

A -A<int> -A<long> B -B<T&> -B<T*> -C -C<int, int> -C<T*, int> +C @@ -63,6 +57,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
A<int>
A<long>
+ +

@@ -195,6 +206,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
B<T&>
B<T*>
+ +

@@ -329,6 +357,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
C<int, int>
C<T*, int>
+ +

diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-1.adoc b/test-files/golden-tests/symbols/record/class-template-specializations-1.adoc index c25cc38a45..966e152928 100644 --- a/test-files/golden-tests/symbols/record/class-template-specializations-1.adoc +++ b/test-files/golden-tests/symbols/record/class-template-specializations-1.adoc @@ -59,47 +59,6 @@ | link:#R8[`R8`] | link:#R9[`R9`] | link:#S0-0cf[`S0`] -| link:#S0-0be[`S0<0>`] -| link:#S0-087[`S0<10>`] -| link:#S0-0e[`S0<12>`] -| link:#S0-09e4[`S0<15>`] -| link:#S0-07a[`S0<18>`] -| link:#S0-0a7[`S0<19>`] -| link:#S0-09c[`S0<2>`] -| link:#S0-0314[`S0<21>`] -| link:#S0-058[`S0<23>`] -| link:#S0-0a2[`S0<25>`] -| link:#S0-09e2[`S0<27>`] -| link:#S0-073[`S0<3>`] -| link:#S0-01[`S0<30>`] -| link:#S0-09ee[`S0<33>`] -| link:#S0-033[`S0<36>`] -| link:#S0-06[`S0<39>`] -| link:#S0-0a1[`S0<4>`] -| link:#S0-0ba[`S0<43>`] -| link:#S0-07e[`S0<6>`] -| link:#S0-0a3[`S0<8>`] -| link:#S0-020a[`S0<1, int*>`] -| link:#S0-05a[`S0<10, bool>`] -| link:#S0-0cd[`S0<12, bool>`] -| link:#S0-000[`S0<15, bool>`] -| link:#S0-051[`S0<18, bool>`] -| link:#S0-002[`S0<19, bool>`] -| link:#S0-03c[`S0<2, bool>`] -| link:#S0-003[`S0<21, bool>`] -| link:#S0-0c7[`S0<23, bool>`] -| link:#S0-0529f[`S0<25, bool>`] -| link:#S0-007[`S0<27, bool>`] -| link:#S0-092[`S0<3, bool>`] -| link:#S0-021[`S0<30, bool>`] -| link:#S0-0318[`S0<33, bool>`] -| link:#S0-0d[`S0<36, bool>`] -| link:#S0-0206[`S0<39, bool>`] -| link:#S0-0b6[`S0<4, bool>`] -| link:#S0-05291[`S0<43, bool>`] -| link:#S0-023[`S0<6, bool>`] -| link:#S0-04[`S0<8, bool>`] -| link:#S0-0c4[`S0<1, T*>`] |=== [#R0] @@ -1408,6 +1367,55 @@ struct S0; | |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#S0-000[`S0<15, bool>`] +| link:#S0-002[`S0<19, bool>`] +| link:#S0-003[`S0<21, bool>`] +| link:#S0-007[`S0<27, bool>`] +| link:#S0-01[`S0<30>`] +| link:#S0-0206[`S0<39, bool>`] +| link:#S0-020a[`S0<1, int*>`] +| link:#S0-021[`S0<30, bool>`] +| link:#S0-023[`S0<6, bool>`] +| link:#S0-0314[`S0<21>`] +| link:#S0-0318[`S0<33, bool>`] +| link:#S0-033[`S0<36>`] +| link:#S0-03c[`S0<2, bool>`] +| link:#S0-04[`S0<8, bool>`] +| link:#S0-051[`S0<18, bool>`] +| link:#S0-05291[`S0<43, bool>`] +| link:#S0-0529f[`S0<25, bool>`] +| link:#S0-058[`S0<23>`] +| link:#S0-05a[`S0<10, bool>`] +| link:#S0-06[`S0<39>`] +| link:#S0-073[`S0<3>`] +| link:#S0-07a[`S0<18>`] +| link:#S0-07e[`S0<6>`] +| link:#S0-087[`S0<10>`] +| link:#S0-092[`S0<3, bool>`] +| link:#S0-09c[`S0<2>`] +| link:#S0-09e2[`S0<27>`] +| link:#S0-09e4[`S0<15>`] +| link:#S0-09ee[`S0<33>`] +| link:#S0-0a1[`S0<4>`] +| link:#S0-0a2[`S0<25>`] +| link:#S0-0a3[`S0<8>`] +| link:#S0-0a7[`S0<19>`] +| link:#S0-0b6[`S0<4, bool>`] +| link:#S0-0ba[`S0<43>`] +| link:#S0-0be[`S0<0>`] +| link:#S0-0c4[`S0<1, T*>`] +| link:#S0-0c7[`S0<23, bool>`] +| link:#S0-0cd[`S0<12, bool>`] +| link:#S0-0d[`S0<36, bool>`] +| link:#S0-0e[`S0<12>`] +|=== + + [#S0-0cf-S1] == link:#S0-0cf[S0]::S1 @@ -1468,6 +1476,25 @@ struct S2; | link:#S0-0cf-S1-S2-f2[`f2`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#S0-09e4-S1-S2-02[`S2<16>`] +| link:#S0-0e-S1-S2-02[`S2<13>`] +| link:#S0-000-S1-S2-03[`S2<16, bool>`] +| link:#S0-0cd-S1-S2-05[`S2<13, bool>`] +| link:#S0-07e-S1-S2-06[`S2<7, T*>`] +| link:#S0-07e-S1-S2-07[`S2<7, int*>`] +| link:#S0-087-S1-S2-08[`S2<11>`] +| link:#S0-04-S1-S2-0a[`S2<9, bool>`] +| link:#S0-05a-S1-S2-0b[`S2<11, bool>`] +| link:#S0-0a3-S1-S2-0c[`S2<9>`] +| link:#S0-0a1-S1-S2-0f[`S2<5>`] +|=== + + [#S0-0cf-S1-S2-S3] == link:#S0-0cf[S0]::link:#S0-0cf-S1[S1]::link:#S0-0cf-S1-S2[S2]::S3 @@ -1524,6 +1551,17 @@ struct S4; | link:#S0-0cf-S1-S2-S4-f4[`f4`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#S0-09e4-S1-S2-02-S4-02[`S4<17, int*>`] +| link:#S0-09e4-S1-S2-02-S4-07[`S4<17, T*>`] +| link:#S0-0e-S1-S2-02-S4-0c[`S4<14>`] +|=== + + [#S0-0cf-S1-S2-S4-f4] == link:#S0-0cf[S0]::link:#S0-0cf-S1[S1]::link:#S0-0cf-S1-S2[S2]::link:#S0-0cf-S1-S2-S4[S4]::f4 @@ -1594,6 +1632,33 @@ struct S5; | link:#S0-0cf-S5-f5[`f5`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#S0-09ee-S5-02[`S5<34>`] +| link:#S0-0a2-S5-02[`S5<26>`] +| link:#S0-0314-S5-03[`S5<22, int*>`] +| link:#S0-01-S5-04[`S5<31>`] +| link:#S0-0529f-S5-05c[`S5<26, bool>`] +| link:#S0-0a7-S5-07[`S5<20>`] +| link:#S0-06-S5-07[`S5<40>`] +| link:#S0-0206-S5-08[`S5<40, bool>`] +| link:#S0-0ba-S5-08[`S5<44>`] +| link:#S0-058-S5-09[`S5<24>`] +| link:#S0-021-S5-0b[`S5<31, bool>`] +| link:#S0-0d-S5-0b[`S5<37, bool>`] +| link:#S0-0318-S5-0b[`S5<34, bool>`] +| link:#S0-0314-S5-0b[`S5<22, T*>`] +| link:#S0-09e2-S5-0c[`S5<28>`] +| link:#S0-007-S5-0d[`S5<28, bool>`] +| link:#S0-05291-S5-0e[`S5<44, bool>`] +| link:#S0-033-S5-0f[`S5<37>`] +| link:#S0-0c7-S5-0f[`S5<24, bool>`] +|=== + + [#S0-0cf-S5-S6] == link:#S0-0cf[S0]::link:#S0-0cf-S5[S5]::S6 @@ -1654,6 +1719,25 @@ struct S7; | link:#S0-0cf-S5-S6-S7-f7[`f7`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#S0-0206-S5-08-S6-S7-01[`S7<41, bool>`] +| link:#S0-0ba-S5-08-S6-S7-02[`S7<45>`] +| link:#S0-09ee-S5-02-S6-S7-03[`S7<35>`] +| link:#S0-01-S5-04-S6-S7-05[`S7<32>`] +| link:#S0-0318-S5-0b-S6-S7-05[`S7<35, bool>`] +| link:#S0-09e2-S5-0c-S6-S7-0a[`S7<29, T*>`] +| link:#S0-06-S5-07-S6-S7-0a[`S7<41>`] +| link:#S0-0d-S5-0b-S6-S7-0d[`S7<38, bool>`] +| link:#S0-09e2-S5-0c-S6-S7-0d[`S7<29, int*>`] +| link:#S0-033-S5-0f-S6-S7-0d[`S7<38>`] +| link:#S0-05291-S5-0e-S6-S7-0f[`S7<45, bool>`] +|=== + + [#S0-0cf-S5-S6-S7-S8] == link:#S0-0cf[S0]::link:#S0-0cf-S5[S5]::link:#S0-0cf-S5-S6[S6]::link:#S0-0cf-S5-S6-S7[S7]::S8 @@ -1710,6 +1794,17 @@ struct S9; | link:#S0-0cf-S5-S6-S7-S9-f9[`f9`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#S0-06-S5-07-S6-S7-0a-S9-00[`S9<42, T*>`] +| link:#S0-06-S5-07-S6-S7-0a-S9-08[`S9<42, int*>`] +| link:#S0-0ba-S5-08-S6-S7-02-S9-0f[`S9<46>`] +|=== + + [#S0-0cf-S5-S6-S7-S9-f9] == link:#S0-0cf[S0]::link:#S0-0cf-S5[S5]::link:#S0-0cf-S5-S6[S6]::link:#S0-0cf-S5-S6-S7[S7]::link:#S0-0cf-S5-S6-S7-S9[S9]::f9 @@ -1846,7 +1941,6 @@ struct S1; |=== | Name | link:#S0-087-S1-S2-0b[`S2`] -| link:#S0-087-S1-S2-08[`S2<11>`] |=== === Member Functions @@ -2041,7 +2135,6 @@ struct S1; |=== | Name | link:#S0-0e-S1-S2-09[`S2`] -| link:#S0-0e-S1-S2-02[`S2<13>`] |=== === Member Functions @@ -2087,7 +2180,6 @@ struct link:#S0-0cf-S1-S2[S2]<13>; | Name | link:#S0-0e-S1-S2-02-S3[`S3`] | link:#S0-0e-S1-S2-02-S4-00[`S4`] -| link:#S0-0e-S1-S2-02-S4-0c[`S4<14>`] |=== === Member Functions @@ -2250,7 +2342,6 @@ struct S1; |=== | Name | link:#S0-09e4-S1-S2-07[`S2`] -| link:#S0-09e4-S1-S2-02[`S2<16>`] |=== === Member Functions @@ -2296,8 +2387,6 @@ struct link:#S0-0cf-S1-S2[S2]<16>; | Name | link:#S0-09e4-S1-S2-02-S3[`S3`] | link:#S0-09e4-S1-S2-02-S4-00[`S4`] -| link:#S0-09e4-S1-S2-02-S4-02[`S4<17, int*>`] -| link:#S0-09e4-S1-S2-02-S4-07[`S4<17, T*>`] |=== === Member Functions @@ -2535,7 +2624,6 @@ struct link:#S0-0cf[S0]<19>; | Name | link:#S0-0a7-S1[`S1`] | link:#S0-0a7-S5-03[`S5`] -| link:#S0-0a7-S5-07[`S5<20>`] |=== === Member Functions @@ -2709,8 +2797,6 @@ struct link:#S0-0cf[S0]<21>; | Name | link:#S0-0314-S1[`S1`] | link:#S0-0314-S5-07[`S5`] -| link:#S0-0314-S5-03[`S5<22, int*>`] -| link:#S0-0314-S5-0b[`S5<22, T*>`] |=== === Member Functions @@ -2827,7 +2913,6 @@ struct link:#S0-0cf[S0]<23>; | Name | link:#S0-058-S1[`S1`] | link:#S0-058-S5-0b[`S5`] -| link:#S0-058-S5-09[`S5<24>`] |=== === Member Functions @@ -2962,7 +3047,6 @@ struct link:#S0-0cf[S0]<25>; | Name | link:#S0-0a2-S1[`S1`] | link:#S0-0a2-S5-04[`S5`] -| link:#S0-0a2-S5-02[`S5<26>`] |=== === Member Functions @@ -3141,7 +3225,6 @@ struct link:#S0-0cf[S0]<27>; | Name | link:#S0-09e2-S1[`S1`] | link:#S0-09e2-S5-0b[`S5`] -| link:#S0-09e2-S5-0c[`S5<28>`] |=== === Member Functions @@ -3226,8 +3309,6 @@ struct S6; |=== | Name | link:#S0-09e2-S5-0c-S6-S7-0b[`S7`] -| link:#S0-09e2-S5-0c-S6-S7-0d[`S7<29, int*>`] -| link:#S0-09e2-S5-0c-S6-S7-0a[`S7<29, T*>`] |=== === Member Functions @@ -3482,7 +3563,6 @@ struct link:#S0-0cf[S0]<30>; | Name | link:#S0-01-S1[`S1`] | link:#S0-01-S5-07[`S5`] -| link:#S0-01-S5-04[`S5<31>`] |=== === Member Functions @@ -3567,7 +3647,6 @@ struct S6; |=== | Name | link:#S0-01-S5-04-S6-S7-0c[`S7`] -| link:#S0-01-S5-04-S6-S7-05[`S7<32>`] |=== === Member Functions @@ -3675,7 +3754,6 @@ struct link:#S0-0cf[S0]<33>; | Name | link:#S0-09ee-S1[`S1`] | link:#S0-09ee-S5-0b[`S5`] -| link:#S0-09ee-S5-02[`S5<34>`] |=== === Member Functions @@ -3760,7 +3838,6 @@ struct S6; |=== | Name | link:#S0-09ee-S5-02-S6-S7-09[`S7`] -| link:#S0-09ee-S5-02-S6-S7-03[`S7<35>`] |=== === Member Functions @@ -3925,7 +4002,6 @@ struct link:#S0-0cf[S0]<36>; | Name | link:#S0-033-S1[`S1`] | link:#S0-033-S5-03[`S5`] -| link:#S0-033-S5-0f[`S5<37>`] |=== === Member Functions @@ -4010,7 +4086,6 @@ struct S6; |=== | Name | link:#S0-033-S5-0f-S6-S7-05[`S7`] -| link:#S0-033-S5-0f-S6-S7-0d[`S7<38>`] |=== === Member Functions @@ -4175,7 +4250,6 @@ struct link:#S0-0cf[S0]<39>; | Name | link:#S0-06-S1[`S1`] | link:#S0-06-S5-03[`S5`] -| link:#S0-06-S5-07[`S5<40>`] |=== === Member Functions @@ -4260,7 +4334,6 @@ struct S6; |=== | Name | link:#S0-06-S5-07-S6-S7-08[`S7`] -| link:#S0-06-S5-07-S6-S7-0a[`S7<41>`] |=== === Member Functions @@ -4306,8 +4379,6 @@ struct link:#S0-0cf-S5-S6-S7[S7]<41>; | Name | link:#S0-06-S5-07-S6-S7-0a-S8[`S8`] | link:#S0-06-S5-07-S6-S7-0a-S9-05[`S9`] -| link:#S0-06-S5-07-S6-S7-0a-S9-08[`S9<42, int*>`] -| link:#S0-06-S5-07-S6-S7-0a-S9-00[`S9<42, T*>`] |=== === Member Functions @@ -4491,7 +4562,6 @@ struct S1; |=== | Name | link:#S0-0a1-S1-S2-00[`S2`] -| link:#S0-0a1-S1-S2-0f[`S2<5>`] |=== === Member Functions @@ -4601,7 +4671,6 @@ struct link:#S0-0cf[S0]<43>; | Name | link:#S0-0ba-S1[`S1`] | link:#S0-0ba-S5-0f[`S5`] -| link:#S0-0ba-S5-08[`S5<44>`] |=== === Member Functions @@ -4686,7 +4755,6 @@ struct S6; |=== | Name | link:#S0-0ba-S5-08-S6-S7-04[`S7`] -| link:#S0-0ba-S5-08-S6-S7-02[`S7<45>`] |=== === Member Functions @@ -4732,7 +4800,6 @@ struct link:#S0-0cf-S5-S6-S7[S7]<45>; | Name | link:#S0-0ba-S5-08-S6-S7-02-S8[`S8`] | link:#S0-0ba-S5-08-S6-S7-02-S9-0b[`S9`] -| link:#S0-0ba-S5-08-S6-S7-02-S9-0f[`S9<46>`] |=== === Member Functions @@ -4893,8 +4960,6 @@ struct S1; |=== | Name | link:#S0-07e-S1-S2-04[`S2`] -| link:#S0-07e-S1-S2-07[`S2<7, int*>`] -| link:#S0-07e-S1-S2-06[`S2<7, T*>`] |=== === Member Functions @@ -5055,7 +5120,6 @@ struct S1; |=== | Name | link:#S0-0a3-S1-S2-0b[`S2`] -| link:#S0-0a3-S1-S2-0c[`S2<9>`] |=== === Member Functions @@ -5273,7 +5337,6 @@ struct S1; |=== | Name | link:#S0-05a-S1-S2-07[`S2`] -| link:#S0-05a-S1-S2-0b[`S2<11, bool>`] |=== === Member Functions @@ -5468,7 +5531,6 @@ struct S1; |=== | Name | link:#S0-0cd-S1-S2-0e[`S2`] -| link:#S0-0cd-S1-S2-05[`S2<13, bool>`] |=== === Member Functions @@ -5663,7 +5725,6 @@ struct S1; |=== | Name | link:#S0-000-S1-S2-08[`S2`] -| link:#S0-000-S1-S2-03[`S2<16, bool>`] |=== === Member Functions @@ -6194,7 +6255,6 @@ struct link:#S0-0cf[S0]<23, bool>; | Name | link:#S0-0c7-S1[`S1`] | link:#S0-0c7-S5-03[`S5`] -| link:#S0-0c7-S5-0f[`S5<24, bool>`] |=== === Member Functions @@ -6373,7 +6433,6 @@ struct link:#S0-0cf[S0]<25, bool>; | Name | link:#S0-0529f-S1[`S1`] | link:#S0-0529f-S5-051[`S5`] -| link:#S0-0529f-S5-05c[`S5<26, bool>`] |=== === Member Functions @@ -6552,7 +6611,6 @@ struct link:#S0-0cf[S0]<27, bool>; | Name | link:#S0-007-S1[`S1`] | link:#S0-007-S5-0f[`S5`] -| link:#S0-007-S5-0d[`S5<28, bool>`] |=== === Member Functions @@ -6855,7 +6913,6 @@ struct link:#S0-0cf[S0]<30, bool>; | Name | link:#S0-021-S1[`S1`] | link:#S0-021-S5-06[`S5`] -| link:#S0-021-S5-0b[`S5<31, bool>`] |=== === Member Functions @@ -7034,7 +7091,6 @@ struct link:#S0-0cf[S0]<33, bool>; | Name | link:#S0-0318-S1[`S1`] | link:#S0-0318-S5-0f[`S5`] -| link:#S0-0318-S5-0b[`S5<34, bool>`] |=== === Member Functions @@ -7119,7 +7175,6 @@ struct S6; |=== | Name | link:#S0-0318-S5-0b-S6-S7-04[`S7`] -| link:#S0-0318-S5-0b-S6-S7-05[`S7<35, bool>`] |=== === Member Functions @@ -7305,7 +7360,6 @@ struct link:#S0-0cf[S0]<36, bool>; | Name | link:#S0-0d-S1[`S1`] | link:#S0-0d-S5-09[`S5`] -| link:#S0-0d-S5-0b[`S5<37, bool>`] |=== === Member Functions @@ -7390,7 +7444,6 @@ struct S6; |=== | Name | link:#S0-0d-S5-0b-S6-S7-08[`S7`] -| link:#S0-0d-S5-0b-S6-S7-0d[`S7<38, bool>`] |=== === Member Functions @@ -7555,7 +7608,6 @@ struct link:#S0-0cf[S0]<39, bool>; | Name | link:#S0-0206-S1[`S1`] | link:#S0-0206-S5-06[`S5`] -| link:#S0-0206-S5-08[`S5<40, bool>`] |=== === Member Functions @@ -7640,7 +7692,6 @@ struct S6; |=== | Name | link:#S0-0206-S5-08-S6-S7-06[`S7`] -| link:#S0-0206-S5-08-S6-S7-01[`S7<41, bool>`] |=== === Member Functions @@ -7929,7 +7980,6 @@ struct link:#S0-0cf[S0]<43, bool>; | Name | link:#S0-05291-S1[`S1`] | link:#S0-05291-S5-02[`S5`] -| link:#S0-05291-S5-0e[`S5<44, bool>`] |=== === Member Functions @@ -8014,7 +8064,6 @@ struct S6; |=== | Name | link:#S0-05291-S5-0e-S6-S7-04[`S7`] -| link:#S0-05291-S5-0e-S6-S7-0f[`S7<45, bool>`] |=== === Member Functions @@ -8331,7 +8380,6 @@ struct S1; |=== | Name | link:#S0-04-S1-S2-0e[`S2`] -| link:#S0-04-S1-S2-0a[`S2<9, bool>`] |=== === Member Functions diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-1.html b/test-files/golden-tests/symbols/record/class-template-specializations-1.html index bf48da4578..19d3372ff5 100644 --- a/test-files/golden-tests/symbols/record/class-template-specializations-1.html +++ b/test-files/golden-tests/symbols/record/class-template-specializations-1.html @@ -70,48 +70,7 @@

R7 R8 R9 -S0 -S0<0> -S0<10> -S0<12> -S0<15> -S0<18> -S0<19> -S0<2> -S0<21> -S0<23> -S0<25> -S0<27> -S0<3> -S0<30> -S0<33> -S0<36> -S0<39> -S0<4> -S0<43> -S0<6> -S0<8> -S0<1, int*> -S0<10, bool> -S0<12, bool> -S0<15, bool> -S0<18, bool> -S0<19, bool> -S0<2, bool> -S0<21, bool> -S0<23, bool> -S0<25, bool> -S0<27, bool> -S0<3, bool> -S0<30, bool> -S0<33, bool> -S0<36, bool> -S0<39, bool> -S0<4, bool> -S0<43, bool> -S0<6, bool> -S0<8, bool> -S0<1, T*> +S0 @@ -1917,6 +1876,62 @@

+

+
@@ -2008,6 +2023,32 @@

+
+

+Specializations

+ + + + + + + + + + + + + + + + + + + + +
Name
S2<16>
S2<13>
S2<16, bool>
S2<13, bool>
S2<7, T*>
S2<7, int*>
S2<11>
S2<9, bool>
S2<11, bool>
S2<9>
S2<5>
+ +

@@ -2083,6 +2124,24 @@

+
+

+Specializations

+ + + + + + + + + + + + +
Name
S4<17, int*>
S4<17, T*>
S4<14>
+ +

@@ -2171,6 +2230,40 @@

+

@@ -2261,6 +2354,32 @@

+
+

+Specializations

+ + + + + + + + + + + + + + + + + + + + +
Name
S7<41, bool>
S7<45>
S7<35>
S7<32>
S7<35, bool>
S7<29, T*>
S7<41>
S7<38, bool>
S7<29, int*>
S7<38>
S7<45, bool>
+ +

@@ -2336,6 +2455,24 @@

+
+

+Specializations

+ + + + + + + + + + + + +
Name
S9<42, T*>
S9<42, int*>
S9<46>
+ +

@@ -2506,8 +2643,7 @@

-S2 -S2<11> +S2 @@ -2767,8 +2903,7 @@

-S2 -S2<13> +S2 @@ -2831,8 +2966,7 @@

S3 -S4 -S4<14> +S4 @@ -3045,8 +3179,7 @@

-S2 -S2<16> +S2 @@ -3109,9 +3242,7 @@

S3 -S4 -S4<17, int*> -S4<17, T*> +S4 @@ -3421,8 +3552,7 @@

S1 -S5 -S5<20> +S5 @@ -3654,9 +3784,7 @@

S1 -S5 -S5<22, int*> -S5<22, T*> +S5 @@ -3812,8 +3940,7 @@

S1 -S5 -S5<24> +S5 @@ -3994,8 +4121,7 @@

S1 -S5 -S5<26> +S5 @@ -4236,8 +4362,7 @@

S1 -S5 -S5<28> +S5 @@ -4357,9 +4482,7 @@

-S7 -S7<29, int*> -S7<29, T*> +S7 @@ -4696,8 +4819,7 @@

S1 -S5 -S5<31> +S5 @@ -4817,8 +4939,7 @@

-S7 -S7<32> +S7 @@ -4955,8 +5076,7 @@

S1 -S5 -S5<34> +S5 @@ -5076,8 +5196,7 @@

-S7 -S7<35> +S7 @@ -5290,8 +5409,7 @@

S1 -S5 -S5<37> +S5 @@ -5411,8 +5529,7 @@

-S7 -S7<38> +S7 @@ -5625,8 +5742,7 @@

S1 -S5 -S5<40> +S5 @@ -5746,8 +5862,7 @@

-S7 -S7<41> +S7 @@ -5810,9 +5925,7 @@

S8 -S9 -S9<42, int*> -S9<42, T*> +S9 @@ -6053,8 +6166,7 @@

-S2 -S2<5> +S2 @@ -6195,8 +6307,7 @@

S1 -S5 -S5<44> +S5 @@ -6316,8 +6427,7 @@

-S7 -S7<45> +S7 @@ -6380,8 +6490,7 @@

S8 -S9 -S9<46> +S9 @@ -6590,9 +6699,7 @@

-S2 -S2<7, int*> -S2<7, T*> +S2 @@ -6808,8 +6915,7 @@

-S2 -S2<9> +S2 @@ -7101,8 +7207,7 @@

-S2 -S2<11, bool> +S2 @@ -7362,8 +7467,7 @@

-S2 -S2<13, bool> +S2 @@ -7623,8 +7727,7 @@

-S2 -S2<16, bool> +S2 @@ -8333,8 +8436,7 @@

S1 -S5 -S5<24, bool> +S5 @@ -8575,8 +8677,7 @@

S1 -S5 -S5<26, bool> +S5 @@ -8817,8 +8918,7 @@

S1 -S5 -S5<28, bool> +S5 @@ -9227,8 +9327,7 @@

S1 -S5 -S5<31, bool> +S5 @@ -9469,8 +9568,7 @@

S1 -S5 -S5<34, bool> +S5 @@ -9590,8 +9688,7 @@

-S7 -S7<35, bool> +S7 @@ -9832,8 +9929,7 @@

S1 -S5 -S5<37, bool> +S5 @@ -9953,8 +10049,7 @@

-S7 -S7<38, bool> +S7 @@ -10167,8 +10262,7 @@

S1 -S5 -S5<40, bool> +S5 @@ -10288,8 +10382,7 @@

-S7 -S7<41, bool> +S7 @@ -10670,8 +10763,7 @@

S1 -S5 -S5<44, bool> +S5 @@ -10791,8 +10883,7 @@

-S7 -S7<45, bool> +S7 @@ -11216,8 +11307,7 @@

-S2 -S2<9, bool> +S2 diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-2.adoc b/test-files/golden-tests/symbols/record/class-template-specializations-2.adoc index 9c2c3a8229..466c1cfb29 100644 --- a/test-files/golden-tests/symbols/record/class-template-specializations-2.adoc +++ b/test-files/golden-tests/symbols/record/class-template-specializations-2.adoc @@ -10,9 +10,6 @@ |=== | Name | link:#A-0e[`A`] -| link:#A-06[`A<double>`] -| link:#A-02[`A<long*>`] -| link:#A-03[`A<T*>`] |=== [#A-0e] @@ -28,6 +25,17 @@ template<typename T> struct A; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-02[`A<long*>`] +| link:#A-03[`A<T*>`] +| link:#A-06[`A<double>`] +|=== + + [#A-06] == link:#A-0e[A]<double> @@ -47,8 +55,6 @@ struct link:#A-0e[A]<double>; |=== | Name | link:#A-06-D-0b[`D`] -| link:#A-06-D-04[`D<float>`] -| link:#A-06-D-07[`D<short>`] |=== [#A-06-D-0b] @@ -70,9 +76,18 @@ struct D; |=== | Name | link:#A-06-D-0b-E-01[`E`] -| link:#A-06-D-0b-E-04[`E<T*>`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-06-D-04[`D<float>`] +| link:#A-06-D-07[`D<short>`] +|=== + + [#A-06-D-0b-E-01] == link:#A-06[A<double>]::link:#A-06-D-0b[D]::E @@ -86,6 +101,16 @@ template<typename T> struct E; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-06-D-07-E-01[`E<int*>`] +| link:#A-06-D-0b-E-04[`E<T*>`] +|=== + + [#A-06-D-0b-E-04] == link:#A-06[A<double>]::link:#A-06-D-0b[D]::link:#A-06-D-0b-E-01[E]<T*> @@ -138,7 +163,6 @@ struct link:#A-06-D-0b[D]<float>; |=== | Name | link:#A-06-D-04-G-06[`G`] -| link:#A-06-D-04-G-0c[`G<T*>`] |=== [#A-06-D-04-G-06] @@ -154,6 +178,15 @@ template<typename T> struct G; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-06-D-04-G-0c[`G<T*>`] +|=== + + [#A-06-D-04-G-0c] == link:#A-06[A<double>]::link:#A-06-D-04[D<float>]::link:#A-06-D-04-G-06[G]<T*> @@ -186,7 +219,6 @@ struct link:#A-06-D-0b[D]<short>; |=== | Name | link:#A-06-D-07-E-07[`E`] -| link:#A-06-D-07-E-01[`E<int*>`] |=== [#A-06-D-07-E-07] @@ -254,8 +286,6 @@ struct link:#A-0e[A]<long*>; |=== | Name | link:#A-02-B-06[`B`] -| link:#A-02-B-0d[`B<int>`] -| link:#A-02-B-05[`B<int*>`] |=== [#A-02-B-06] @@ -336,8 +366,6 @@ struct link:#A-0e[A]<T*>; |=== | Name | link:#A-03-B-05[`B`] -| link:#A-03-B-0b[`B<int>`] -| link:#A-03-B-01[`B<U*>`] |=== [#A-03-B-05] @@ -353,6 +381,18 @@ template<typename U> struct B; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-03-B-01[`B<U*>`] +| link:#A-02-B-05[`B<int*>`] +| link:#A-03-B-0b[`B<int>`] +| link:#A-02-B-0d[`B<int>`] +|=== + + [#A-03-B-0b] == link:#A-03[A<T*>]::link:#A-03-B-05[B]<int> diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-2.html b/test-files/golden-tests/symbols/record/class-template-specializations-2.html index 0470da5d08..af7add090d 100644 --- a/test-files/golden-tests/symbols/record/class-template-specializations-2.html +++ b/test-files/golden-tests/symbols/record/class-template-specializations-2.html @@ -21,10 +21,7 @@

-A -A<double> -A<long*> -A<T*> +A @@ -44,6 +41,24 @@

+
+

+Specializations

+ + + + + + + + + + + + +
Name
A<long*>
A<T*>
A<double>
+ +
@@ -68,9 +83,7 @@

-D -D<float> -D<short> +D @@ -100,13 +113,29 @@

-E -E<T*> +E +
+

+Specializations

+ + + + + + + + + + + +
Name
D<float>
D<short>
+ +

@@ -123,6 +152,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
E<int*>
E<T*>
+ +
@@ -192,8 +238,7 @@

-G -G<T*> +G @@ -215,6 +260,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
G<T*>
+ +
@@ -255,8 +316,7 @@

-E -E<int*> +E @@ -347,9 +407,7 @@

-B -B<int> -B<int*> +B @@ -456,9 +514,7 @@

-B -B<int> -B<U*> +B @@ -480,6 +536,25 @@

+
+

+Specializations

+ + + + + + + + + + + + + +
Name
B<U*>
B<int*>
B<int>
B<int>
+ +
diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-3.adoc b/test-files/golden-tests/symbols/record/class-template-specializations-3.adoc index 53a96dc82e..af2d5ec438 100644 --- a/test-files/golden-tests/symbols/record/class-template-specializations-3.adoc +++ b/test-files/golden-tests/symbols/record/class-template-specializations-3.adoc @@ -10,10 +10,6 @@ |=== | Name | link:#A-0e[`A`] -| link:#A-01[`A<float>`] -| link:#A-0c[`A<long>`] -| link:#A-00[`A<short>`] -| link:#A-07[`A<unsigned int>`] | link:#E[`E`] |=== @@ -36,9 +32,20 @@ struct A; |=== | Name | link:#A-0e-B-07[`B`] -| link:#A-0e-B-00[`B<double>`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00[`A<short>`] +| link:#A-01[`A<float>`] +| link:#A-07[`A<unsigned int>`] +| link:#A-0c[`A<long>`] +|=== + + [#A-0e-B-07] == link:#A-0e[A]::B @@ -59,9 +66,22 @@ struct B; | Name | link:#A-0e-B-07-C[`C`] | link:#A-0e-B-07-D-09[`D`] -| link:#A-0e-B-07-D-0f[`D<bool>`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00-B-00[`B<void>`] +| link:#A-0e-B-00[`B<double>`] +| link:#A-07-B-03e[`B<double>`] +| link:#A-07-B-05[`B<float>`] +| link:#A-00-B-07[`B<double>`] +| link:#A-01-B-08[`B<double>`] +|=== + + [#A-0e-B-07-C] == link:#A-0e[A]::link:#A-0e-B-07[B]::C @@ -87,6 +107,16 @@ template<typename V> struct D; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-07-B-05-D-01[`D<bool>`] +| link:#A-0e-B-07-D-0f[`D<bool>`] +|=== + + [#A-0e-B-07-D-0f] == link:#A-0e[A]::link:#A-0e-B-07[B]::link:#A-0e-B-07-D-09[D]<bool> @@ -120,7 +150,6 @@ struct link:#A-0e-B-07[B]<double>; | Name | link:#A-0e-B-00-C[`C`] | link:#A-0e-B-00-D-09[`D`] -| link:#A-0e-B-00-D-0d[`D<bool>`] |=== [#A-0e-B-00-C] @@ -148,6 +177,19 @@ template<typename V> struct D; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00-B-07-D-0150[`D<bool>`] +| link:#A-0c-B-0d-D-03[`D<bool>`] +| link:#A-01-B-08-D-0af[`D<bool>`] +| link:#A-0e-B-00-D-0d[`D<bool>`] +| link:#A-07-B-03e-D-0f[`D<bool>`] +|=== + + [#A-0e-B-00-D-0d] == link:#A-0e[A]::link:#A-0e-B-00[B<double>]::link:#A-0e-B-00-D-09[D]<bool> @@ -180,7 +222,6 @@ struct link:#A-0e[A]<float>; |=== | Name | link:#A-01-B-07[`B`] -| link:#A-01-B-08[`B<double>`] |=== [#A-01-B-07] @@ -216,7 +257,6 @@ struct link:#A-0e-B-07[B]<double>; | Name | link:#A-01-B-08-C[`C`] | link:#A-01-B-08-D-0ae[`D`] -| link:#A-01-B-08-D-0af[`D<bool>`] |=== [#A-01-B-08-C] @@ -276,8 +316,6 @@ struct link:#A-0e[A]<long>; |=== | Name | link:#A-0c-B-0b[`B`] -| link:#A-0c-B-0d[`B<double>`] -| link:#A-0c-B-08[`B<float>`] |=== [#A-0c-B-0b] @@ -300,9 +338,18 @@ struct B; | Name | link:#A-0c-B-0b-C[`C`] | link:#A-0c-B-0b-D-00[`D`] -| link:#A-0c-B-0b-D-0b[`D<bool>`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-0c-B-08[`B<float>`] +| link:#A-0c-B-0d[`B<double>`] +|=== + + [#A-0c-B-0b-C] == link:#A-0c[A<long>]::link:#A-0c-B-0b[B]::C @@ -328,6 +375,16 @@ template<typename V> struct D; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-0c-B-08-D-03[`D<bool>`] +| link:#A-0c-B-0b-D-0b[`D<bool>`] +|=== + + [#A-0c-B-0b-D-0b] == link:#A-0c[A<long>]::link:#A-0c-B-0b[B]::link:#A-0c-B-0b-D-00[D]<bool> @@ -361,7 +418,6 @@ struct link:#A-0c-B-0b[B]<double>; | Name | link:#A-0c-B-0d-C[`C`] | link:#A-0c-B-0d-D-0c[`D`] -| link:#A-0c-B-0d-D-03[`D<bool>`] |=== [#A-0c-B-0d-C] @@ -422,7 +478,6 @@ struct link:#A-0c-B-0b[B]<float>; | Name | link:#A-0c-B-08-C[`C`] | link:#A-0c-B-08-D-08[`D`] -| link:#A-0c-B-08-D-03[`D<bool>`] |=== [#A-0c-B-08-C] @@ -482,8 +537,6 @@ struct link:#A-0e[A]<short>; |=== | Name | link:#A-00-B-0e[`B`] -| link:#A-00-B-07[`B<double>`] -| link:#A-00-B-00[`B<void>`] |=== [#A-00-B-0e] @@ -519,7 +572,6 @@ struct link:#A-0e-B-07[B]<double>; | Name | link:#A-00-B-07-C[`C`] | link:#A-00-B-07-D-015b[`D`] -| link:#A-00-B-07-D-0150[`D<bool>`] |=== [#A-00-B-07-C] @@ -580,7 +632,6 @@ struct link:#A-0e-B-07[B]<void>; | Name | link:#A-00-B-00-C[`C`] | link:#A-00-B-00-D-03[`D`] -| link:#A-00-B-00-D-07[`D<bool>`] |=== [#A-00-B-00-C] @@ -608,6 +659,15 @@ template<typename V> struct D; ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00-B-00-D-07[`D<bool>`] +|=== + + [#A-00-B-00-D-07] == link:#A-00[A<short>]::link:#A-00-B-00[B<void>]::link:#A-00-B-00-D-03[D]<bool> @@ -640,8 +700,6 @@ struct link:#A-0e[A]<unsigned int>; |=== | Name | link:#A-07-B-03a[`B`] -| link:#A-07-B-03e[`B<double>`] -| link:#A-07-B-05[`B<float>`] |=== [#A-07-B-03a] @@ -677,7 +735,6 @@ struct link:#A-0e-B-07[B]<double>; | Name | link:#A-07-B-03e-C[`C`] | link:#A-07-B-03e-D-01[`D`] -| link:#A-07-B-03e-D-0f[`D<bool>`] |=== [#A-07-B-03e-C] @@ -738,7 +795,6 @@ struct link:#A-0e-B-07[B]<float>; | Name | link:#A-07-B-05-C[`C`] | link:#A-07-B-05-D-0e[`D`] -| link:#A-07-B-05-D-01[`D<bool>`] |=== [#A-07-B-05-C] diff --git a/test-files/golden-tests/symbols/record/class-template-specializations-3.html b/test-files/golden-tests/symbols/record/class-template-specializations-3.html index 72bcb52c47..71fab0924b 100644 --- a/test-files/golden-tests/symbols/record/class-template-specializations-3.html +++ b/test-files/golden-tests/symbols/record/class-template-specializations-3.html @@ -22,10 +22,6 @@

A -A<float> -A<long> -A<short> -A<unsigned int> E @@ -54,13 +50,31 @@

-B -B<double> +B +
+

+Specializations

+ + + + + + + + + + + + + +
Name
A<short>
A<float>
A<unsigned int>
A<long>
+ +

@@ -86,13 +100,33 @@

C -D -D<bool> +D +
+

+Specializations

+ + + + + + + + + + + + + + + +
Name
B<void>
B<double>
B<double>
B<float>
B<double>
B<double>
+ +

@@ -124,6 +158,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
D<bool>
D<bool>
+ +
@@ -165,8 +216,7 @@

C -D -D<bool> +D @@ -203,6 +253,26 @@

+
+

+Specializations

+ + + + + + + + + + + + + + +
Name
D<bool>
D<bool>
D<bool>
D<bool>
D<bool>
+ +
@@ -243,8 +313,7 @@

-B -B<double> +B @@ -291,8 +360,7 @@

C -D -D<bool> +D @@ -369,9 +437,7 @@

-B -B<double> -B<float> +B @@ -402,13 +468,29 @@

C -D -D<bool> +D +
+

+Specializations

+ + + + + + + + + + + +
Name
B<float>
B<double>
+ +

@@ -440,6 +522,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
D<bool>
D<bool>
+ +
@@ -481,8 +580,7 @@

C -D -D<bool> +D @@ -560,8 +658,7 @@

C -D -D<bool> +D @@ -638,9 +735,7 @@

-B -B<double> -B<void> +B @@ -687,8 +782,7 @@

C -D -D<bool> +D @@ -766,8 +860,7 @@

C -D -D<bool> +D @@ -804,6 +897,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
D<bool>
+ +
@@ -844,9 +953,7 @@

-B -B<double> -B<float> +B @@ -893,8 +1000,7 @@

C -D -D<bool> +D @@ -972,8 +1078,7 @@

C -D -D<bool> +D diff --git a/test-files/golden-tests/symbols/record/template-specialization-inheritance.adoc b/test-files/golden-tests/symbols/record/template-specialization-inheritance.adoc index f4f4446b18..a7eea74604 100644 --- a/test-files/golden-tests/symbols/record/template-specialization-inheritance.adoc +++ b/test-files/golden-tests/symbols/record/template-specialization-inheritance.adoc @@ -13,10 +13,6 @@ | link:#R1[`R1`] | link:#R2[`R2`] | link:#S0-0cf[`S0`] -| link:#S0-09[`S0<2>`] -| link:#S0-073[`S0<3>`] -| link:#S0-0e[`S0<5>`] -| link:#S0-07e[`S0<6>`] | link:#U1[`U1`] | link:#U2[`U2`] | link:#U3[`U3`] @@ -168,6 +164,18 @@ struct S0; | |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#S0-073[`S0<3>`] +| link:#S0-07e[`S0<6>`] +| link:#S0-09[`S0<2>`] +| link:#S0-0e[`S0<5>`] +|=== + + [#S0-0cf-S1] == link:#S0-0cf[S0]::S1 diff --git a/test-files/golden-tests/symbols/record/template-specialization-inheritance.html b/test-files/golden-tests/symbols/record/template-specialization-inheritance.html index 8ce550db46..60fd3fa9b8 100644 --- a/test-files/golden-tests/symbols/record/template-specialization-inheritance.html +++ b/test-files/golden-tests/symbols/record/template-specialization-inheritance.html @@ -25,10 +25,6 @@

R1 R2 S0 -S0<2> -S0<3> -S0<5> -S0<6> U1 U2 U3 @@ -228,6 +224,25 @@

+

+
+

+Specializations

+ + + + + + + + + + + + + +
Name
S0<3>
S0<6>
S0<2>
S0<5>
+
diff --git a/test-files/golden-tests/symbols/typedef/decay-to-primary.adoc b/test-files/golden-tests/symbols/typedef/decay-to-primary.adoc index 1a7a7c9f5b..3450760e54 100644 --- a/test-files/golden-tests/symbols/typedef/decay-to-primary.adoc +++ b/test-files/golden-tests/symbols/typedef/decay-to-primary.adoc @@ -10,8 +10,6 @@ |=== | Name | link:#S0-03[`S0`] -| link:#S0-09[`S0<short>`] -| link:#S0-00[`S0<void>`] | link:#A0[`A0`] | link:#A1[`A1`] |=== @@ -62,6 +60,16 @@ struct S0; | link:#S0-03-M1[`M1`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#S0-00[`S0<void>`] +| link:#S0-09[`S0<short>`] +|=== + + [#S0-03-M0] == link:#S0-03[S0]::M0 diff --git a/test-files/golden-tests/symbols/typedef/decay-to-primary.html b/test-files/golden-tests/symbols/typedef/decay-to-primary.html index 93fcacf5fa..ff7ebc1711 100644 --- a/test-files/golden-tests/symbols/typedef/decay-to-primary.html +++ b/test-files/golden-tests/symbols/typedef/decay-to-primary.html @@ -22,8 +22,6 @@

S0 -S0<short> -S0<void> A0 A1 @@ -86,6 +84,23 @@

+
+

+Specializations

+ + + + + + + + + + + +
Name
S0<void>
S0<short>
+ +

diff --git a/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.adoc b/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.adoc index 61b0da57f3..a78d0f3789 100644 --- a/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.adoc +++ b/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.adoc @@ -10,7 +10,6 @@ |=== | Name | link:#S0-03[`S0`] -| link:#S0-00[`S0<void>`] | link:#A5[`A5`] | link:#A9[`A9`] |=== @@ -60,6 +59,15 @@ struct S0; | link:#S0-03-S2[`S2`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#S0-00[`S0<void>`] +|=== + + [#S0-03-S2] == link:#S0-03[S0]::S2 @@ -82,6 +90,15 @@ struct S2; | link:#S0-03-S2-M3[`M3`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#S0-00-S2-02[`S2<char>`] +|=== + + [#S0-03-S2-M2] == link:#S0-03[S0]::link:#S0-03-S2[S2]::M2 @@ -126,7 +143,6 @@ struct link:#S0-03[S0]<void>; |=== | Name | link:#S0-00-S2-0d[`S2`] -| link:#S0-00-S2-02[`S2<char>`] |=== [#S0-00-S2-0d] diff --git a/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.html b/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.html index ecfa7c7aac..97a3225504 100644 --- a/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.html +++ b/test-files/golden-tests/symbols/typedef/implicit-instantiation-member-ref.html @@ -22,7 +22,6 @@

S0 -S0<void> A5 A9 @@ -84,6 +83,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
S0<void>
+ +

@@ -115,6 +130,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
S2<char>
+ +

@@ -166,8 +197,7 @@

-S2 -S2<char> +S2 diff --git a/test-files/golden-tests/symbols/using/using-alias-template-dependent.adoc b/test-files/golden-tests/symbols/using/using-alias-template-dependent.adoc index 0c6c6c692b..7dc4a7166f 100644 --- a/test-files/golden-tests/symbols/using/using-alias-template-dependent.adoc +++ b/test-files/golden-tests/symbols/using/using-alias-template-dependent.adoc @@ -10,7 +10,6 @@ |=== | Name | link:#enable_if-03[`enable_if`] -| link:#enable_if-0e[`enable_if<false, T>`] | link:#is_match[`is_match`] | link:#_UniqAssignable[`_UniqAssignable`] | link:#_UniqCompatible[`_UniqCompatible`] @@ -70,6 +69,15 @@ struct enable_if; | link:#enable_if-03-type[`type`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#enable_if-0e[`enable_if<false, T>`] +|=== + + [#enable_if-03-type] == link:#enable_if-03[enable_if]::type diff --git a/test-files/golden-tests/symbols/using/using-alias-template-dependent.html b/test-files/golden-tests/symbols/using/using-alias-template-dependent.html index b974229117..af495d1bd0 100644 --- a/test-files/golden-tests/symbols/using/using-alias-template-dependent.html +++ b/test-files/golden-tests/symbols/using/using-alias-template-dependent.html @@ -22,7 +22,6 @@

enable_if -enable_if<false, T> is_match _UniqAssignable _UniqCompatible @@ -94,6 +93,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
enable_if<false, T>
+ +

diff --git a/test-files/golden-tests/templates/c_mct_expl_inline.adoc b/test-files/golden-tests/templates/c_mct_expl_inline.adoc index 2b92b2c11d..d36a4b0c3f 100644 --- a/test-files/golden-tests/templates/c_mct_expl_inline.adoc +++ b/test-files/golden-tests/templates/c_mct_expl_inline.adoc @@ -30,7 +30,6 @@ struct A; |=== | Name | link:#A-B-04[`B`] -| link:#A-B-01[`B<int>`] |=== [#A-B-04] @@ -54,6 +53,15 @@ struct B; | link:#A-B-04-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-B-01[`B<int>`] +|=== + + [#A-B-04-f] == link:#A[A]::link:#A-B-04[B]::f diff --git a/test-files/golden-tests/templates/c_mct_expl_inline.html b/test-files/golden-tests/templates/c_mct_expl_inline.html index 68de795537..aa3d8405a1 100644 --- a/test-files/golden-tests/templates/c_mct_expl_inline.html +++ b/test-files/golden-tests/templates/c_mct_expl_inline.html @@ -48,8 +48,7 @@

-B -B<int> +B @@ -85,6 +84,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
B<int>
+ +

diff --git a/test-files/golden-tests/templates/c_mct_expl_outside.adoc b/test-files/golden-tests/templates/c_mct_expl_outside.adoc index dc97e18d36..5cdc312bfa 100644 --- a/test-files/golden-tests/templates/c_mct_expl_outside.adoc +++ b/test-files/golden-tests/templates/c_mct_expl_outside.adoc @@ -30,7 +30,6 @@ struct A; |=== | Name | link:#A-B-04[`B`] -| link:#A-B-01[`B<int>`] |=== [#A-B-04] @@ -54,6 +53,15 @@ struct B; | link:#A-B-04-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-B-01[`B<int>`] +|=== + + [#A-B-04-f] == link:#A[A]::link:#A-B-04[B]::f diff --git a/test-files/golden-tests/templates/c_mct_expl_outside.html b/test-files/golden-tests/templates/c_mct_expl_outside.html index 34594d7226..6faf5ac33f 100644 --- a/test-files/golden-tests/templates/c_mct_expl_outside.html +++ b/test-files/golden-tests/templates/c_mct_expl_outside.html @@ -48,8 +48,7 @@

-B -B<int> +B @@ -85,6 +84,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
B<int>
+ +

diff --git a/test-files/golden-tests/templates/c_mft_expl_inline.adoc b/test-files/golden-tests/templates/c_mft_expl_inline.adoc index 6df23d7c39..4a7eae38e7 100644 --- a/test-files/golden-tests/templates/c_mft_expl_inline.adoc +++ b/test-files/golden-tests/templates/c_mft_expl_inline.adoc @@ -73,6 +73,15 @@ void f(); ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-f-0b[`f<int>`] +|=== + + [#A-f-0b] == link:#A[A]::link:#A-f-0e[f]<int> diff --git a/test-files/golden-tests/templates/c_mft_expl_inline.html b/test-files/golden-tests/templates/c_mft_expl_inline.html index 2c31f305f0..87c540ca56 100644 --- a/test-files/golden-tests/templates/c_mft_expl_inline.html +++ b/test-files/golden-tests/templates/c_mft_expl_inline.html @@ -92,6 +92,22 @@

template<typename T>
 void
 f();
+

+
+

+Specializations

+ + + + + + + + + + +
Name
f<int>
+
diff --git a/test-files/golden-tests/templates/c_mft_expl_outside.adoc b/test-files/golden-tests/templates/c_mft_expl_outside.adoc index 21efd6b0a6..573bba2855 100644 --- a/test-files/golden-tests/templates/c_mft_expl_outside.adoc +++ b/test-files/golden-tests/templates/c_mft_expl_outside.adoc @@ -73,6 +73,15 @@ void f(); ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-f-0b[`f<int>`] +|=== + + [#A-f-0b] == link:#A[A]::link:#A-f-0e[f]<int> diff --git a/test-files/golden-tests/templates/c_mft_expl_outside.html b/test-files/golden-tests/templates/c_mft_expl_outside.html index 87ac4e085b..24db55c7db 100644 --- a/test-files/golden-tests/templates/c_mft_expl_outside.html +++ b/test-files/golden-tests/templates/c_mft_expl_outside.html @@ -92,6 +92,22 @@

template<typename T>
 void
 f();
+

+
+

+Specializations

+ + + + + + + + + + +
Name
f<int>
+
diff --git a/test-files/golden-tests/templates/ct_expl.adoc b/test-files/golden-tests/templates/ct_expl.adoc index 8739c1570a..9ade28f868 100644 --- a/test-files/golden-tests/templates/ct_expl.adoc +++ b/test-files/golden-tests/templates/ct_expl.adoc @@ -10,7 +10,6 @@ |=== | Name | link:#A-0e[`A`] -| link:#A-00[`A<int>`] |=== [#A-0e] @@ -34,6 +33,15 @@ struct A; | link:#A-0e-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00[`A<int>`] +|=== + + [#A-0e-f] == link:#A-0e[A]::f diff --git a/test-files/golden-tests/templates/ct_expl.html b/test-files/golden-tests/templates/ct_expl.html index 3b3ba969be..b9c68f33eb 100644 --- a/test-files/golden-tests/templates/ct_expl.html +++ b/test-files/golden-tests/templates/ct_expl.html @@ -21,8 +21,7 @@

-A -A<int> +A @@ -56,6 +55,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
A<int>
+ +

diff --git a/test-files/golden-tests/templates/ct_mc_expl_outside.adoc b/test-files/golden-tests/templates/ct_mc_expl_outside.adoc index b3453a76f9..1fbf80f123 100644 --- a/test-files/golden-tests/templates/ct_mc_expl_outside.adoc +++ b/test-files/golden-tests/templates/ct_mc_expl_outside.adoc @@ -10,7 +10,6 @@ |=== | Name | link:#A-0e[`A`] -| link:#A-00[`A<int>`] |=== [#A-0e] @@ -34,6 +33,15 @@ struct A; | link:#A-0e-B[`B`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00[`A<int>`] +|=== + + [#A-0e-B] == link:#A-0e[A]::B diff --git a/test-files/golden-tests/templates/ct_mc_expl_outside.html b/test-files/golden-tests/templates/ct_mc_expl_outside.html index 09abc77a35..db5ef240e3 100644 --- a/test-files/golden-tests/templates/ct_mc_expl_outside.html +++ b/test-files/golden-tests/templates/ct_mc_expl_outside.html @@ -21,8 +21,7 @@

-A -A<int> +A @@ -56,6 +55,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
A<int>
+ +

diff --git a/test-files/golden-tests/templates/ct_mct_expl_inline.adoc b/test-files/golden-tests/templates/ct_mct_expl_inline.adoc index fe59635555..0f90d8dc36 100644 --- a/test-files/golden-tests/templates/ct_mct_expl_inline.adoc +++ b/test-files/golden-tests/templates/ct_mct_expl_inline.adoc @@ -31,7 +31,6 @@ struct A; |=== | Name | link:#A-B-07[`B`] -| link:#A-B-06[`B<int>`] |=== [#A-B-07] @@ -55,6 +54,15 @@ struct B; | link:#A-B-07-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-B-06[`B<int>`] +|=== + + [#A-B-07-f] == link:#A[A]::link:#A-B-07[B]::f diff --git a/test-files/golden-tests/templates/ct_mct_expl_inline.html b/test-files/golden-tests/templates/ct_mct_expl_inline.html index fc6af2293f..86f41ee2bc 100644 --- a/test-files/golden-tests/templates/ct_mct_expl_inline.html +++ b/test-files/golden-tests/templates/ct_mct_expl_inline.html @@ -49,8 +49,7 @@

-B -B<int> +B @@ -86,6 +85,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
B<int>
+ +

diff --git a/test-files/golden-tests/templates/ct_mct_expl_outside.adoc b/test-files/golden-tests/templates/ct_mct_expl_outside.adoc index 470989dd57..7aeb8ea7b5 100644 --- a/test-files/golden-tests/templates/ct_mct_expl_outside.adoc +++ b/test-files/golden-tests/templates/ct_mct_expl_outside.adoc @@ -10,7 +10,6 @@ |=== | Name | link:#A-0e[`A`] -| link:#A-00[`A<int>`] |=== [#A-0e] @@ -34,6 +33,15 @@ struct A; | link:#A-0e-B[`B`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00[`A<int>`] +|=== + + [#A-0e-B] == link:#A-0e[A]::B @@ -55,6 +63,15 @@ struct B; | link:#A-0e-B-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00-B-02[`B<int>`] +|=== + + [#A-0e-B-f] == link:#A-0e[A]::link:#A-0e-B[B]::f @@ -87,7 +104,6 @@ struct link:#A-0e[A]<int>; |=== | Name | link:#A-00-B-03[`B`] -| link:#A-00-B-02[`B<int>`] |=== [#A-00-B-03] diff --git a/test-files/golden-tests/templates/ct_mct_expl_outside.html b/test-files/golden-tests/templates/ct_mct_expl_outside.html index 0fcbea97cf..137d968032 100644 --- a/test-files/golden-tests/templates/ct_mct_expl_outside.html +++ b/test-files/golden-tests/templates/ct_mct_expl_outside.html @@ -21,8 +21,7 @@

-A -A<int> +A @@ -56,6 +55,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
A<int>
+ +

@@ -86,6 +101,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
B<int>
+ +

@@ -124,8 +155,7 @@

-B -B<int> +B diff --git a/test-files/golden-tests/templates/ct_mf_expl_outside.adoc b/test-files/golden-tests/templates/ct_mf_expl_outside.adoc index 1174c50a67..11b6e1cca1 100644 --- a/test-files/golden-tests/templates/ct_mf_expl_outside.adoc +++ b/test-files/golden-tests/templates/ct_mf_expl_outside.adoc @@ -10,7 +10,6 @@ |=== | Name | link:#A-0e[`A`] -| link:#A-00[`A<int>`] |=== [#A-0e] @@ -34,6 +33,15 @@ struct A; | link:#A-0e-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00[`A<int>`] +|=== + + [#A-0e-f] == link:#A-0e[A]::f diff --git a/test-files/golden-tests/templates/ct_mf_expl_outside.html b/test-files/golden-tests/templates/ct_mf_expl_outside.html index c175cb3f7f..44b15fba6d 100644 --- a/test-files/golden-tests/templates/ct_mf_expl_outside.html +++ b/test-files/golden-tests/templates/ct_mf_expl_outside.html @@ -21,8 +21,7 @@

-A -A<int> +A @@ -56,6 +55,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
A<int>
+ +

diff --git a/test-files/golden-tests/templates/ct_mft_expl_inline.adoc b/test-files/golden-tests/templates/ct_mft_expl_inline.adoc index bf52845b0a..2528f0c5aa 100644 --- a/test-files/golden-tests/templates/ct_mft_expl_inline.adoc +++ b/test-files/golden-tests/templates/ct_mft_expl_inline.adoc @@ -74,6 +74,15 @@ void f(); ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-f-04[`f<int>`] +|=== + + [#A-f-04] == link:#A[A]::link:#A-f-07[f]<int> diff --git a/test-files/golden-tests/templates/ct_mft_expl_inline.html b/test-files/golden-tests/templates/ct_mft_expl_inline.html index ac4108b714..8edae7e0c6 100644 --- a/test-files/golden-tests/templates/ct_mft_expl_inline.html +++ b/test-files/golden-tests/templates/ct_mft_expl_inline.html @@ -93,6 +93,22 @@

template<typename U>
 void
 f();
+

+
+

+Specializations

+ + + + + + + + + + +
Name
f<int>
+
diff --git a/test-files/golden-tests/templates/ct_mft_expl_outside.adoc b/test-files/golden-tests/templates/ct_mft_expl_outside.adoc index 39c851802b..49da666f81 100644 --- a/test-files/golden-tests/templates/ct_mft_expl_outside.adoc +++ b/test-files/golden-tests/templates/ct_mft_expl_outside.adoc @@ -10,7 +10,6 @@ |=== | Name | link:#A-0e[`A`] -| link:#A-00[`A<int>`] |=== [#A-0e] @@ -34,6 +33,15 @@ struct A; | link:#A-0e-f[`f`] |=== +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00[`A<int>`] +|=== + + [#A-0e-f] == link:#A-0e[A]::f @@ -48,6 +56,15 @@ void f(); ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#A-00-f-07[`f<int>`] +|=== + + [#A-00] == link:#A-0e[A]<int> diff --git a/test-files/golden-tests/templates/ct_mft_expl_outside.html b/test-files/golden-tests/templates/ct_mft_expl_outside.html index a16a5c6f94..7e30a3e645 100644 --- a/test-files/golden-tests/templates/ct_mft_expl_outside.html +++ b/test-files/golden-tests/templates/ct_mft_expl_outside.html @@ -21,8 +21,7 @@

-A -A<int> +A @@ -56,6 +55,22 @@

+
+

+Specializations

+ + + + + + + + + + +
Name
A<int>
+ +

@@ -70,6 +85,22 @@

template<typename U>
 void
 f();
+

+
+

+Specializations

+ + + + + + + + + + +
Name
f<int>
+
diff --git a/test-files/golden-tests/templates/ft_expl.adoc b/test-files/golden-tests/templates/ft_expl.adoc index 9e7c47f0ef..b65f36e22f 100644 --- a/test-files/golden-tests/templates/ft_expl.adoc +++ b/test-files/golden-tests/templates/ft_expl.adoc @@ -53,6 +53,15 @@ void f(); ---- +=== Specializations + +[cols=1] +|=== +| Name +| link:#f-0ca[`f<int>`] +|=== + + [#f-0ca] == link:#f-03[f]<int> diff --git a/test-files/golden-tests/templates/ft_expl.html b/test-files/golden-tests/templates/ft_expl.html index 60bdd61040..2ac0d95ed4 100644 --- a/test-files/golden-tests/templates/ft_expl.html +++ b/test-files/golden-tests/templates/ft_expl.html @@ -63,6 +63,22 @@

template<typename T>
 void
 f();
+

+
+

+Specializations

+ + + + + + + + + + +
Name
f<int>
+