Support more parameter types in vtable name mangling
- Dominant language
- C++
- Stars
- 11
- Forks
- 4
- Avg merge
- 16h 39m
- Merged PRs (30d)
- 131
Description
#256 intentionally leaves some parameter types unsupported: using one in an interface member function fails noisily at compile time (a consteval throw such as "name mangling: unsupported parameter type") rather than mis-conforming or misbehaving at runtime.
Currently unsupported, all previously accepted by the index-based naming #256 replaces:
- pointer-to-member types (Itanium `M`)
- non-type template arguments other than `bool`, the standard integral types, and enum values equal to a named enumerator — floating-point, class-type, pointer and reference arguments, template-template arguments, and enum values matching no enumerator (bitmask values, any `std::byte` argument)
- unnamed types: closure types, typedef'd anonymous enums
Filed from the #256 review discussion ("We will leave these as unsupported for now") so support can be added as demand arises.
Contributor guide
Research direction
Start at the vtable name-mangling implementation introduced by #256 and reproduce an interface member function using one of the listed unsupported parameter types. The issue names no source file or test, and covers several distinct categories, so establish which parameter type to support and the expected mangling before defining completion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100