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>
+