How can I get function templates specializations?

Open
#1,874 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Needs clarification
Activity status
Stale
Tech stack
cpp, csharp

Research direction

No source file or test is named. Start by reproducing the shown C# traversal and compare FunctionTemplate.Specializations with ClassTemplate.Specializations for the same parsed input. Done means determining whether function-template specializations should be populated and either correcting that behavior or clearly documenting the limitation.

Written by the indexing model from the issue text.

Description

Brief Description

How can I get function templates specializations (similar to class templates specializations)?
I am using the following code:

            foreach (var template in sourceUnit.Templates)
            {
                if (template is FunctionTemplate ft)
                {
                    foreach(var specialization in ft.Specializations) // always ft.Specializations is empty !!!
                    {
                    }
                }
                else if (template is ClassTemplate ct)
                {
                    foreach (var specialization in ct.Specializations) // ct.Specializations gives back the correct results !!!
                    {
                    }
               }
               else if (template is VarTemplate)
               {
               }
               else if (template is TypeAliasTemplate)
               {
               }
               else
               {
               }

Kind regards,
Mircea Troi

OS: Windows / OS X / Linux (include version and/or distro)

Windows, latest version.

Used headers
Used settings

Target: MSVC/GCC/Clang

MSVC

Other settings

Stack trace or incompilable generated code
Dominant language
C#
Stars
3.4k
Forks
541
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from mono/CppSharp

All issues in mono/CppSharp

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.