jbcoe / jbcoe/cc-protocol

Support more parameter types in vtable name mangling

Open
#259 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.