This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.

4433. Incorrect query for C language linkage

Section: 21.4.7 [meta.reflection.queries] Status: New Submitter: Tomasz KamiƄski Opened: 2025-10-27 Last modified: 2025-10-27

Priority: Not Prioritized

View other active issues in [meta.reflection.queries].

View all other issues in [meta.reflection.queries].

View all issues with New status.

Discussion:

Addresses US 97-203

21.4.7 [meta.reflection.queries] Language linkage is a property of functions, variables, and function types (6.7 [basic.link]), not of names.

[ The wording below contains a drive-by fix for a misapplication of P2996R13 ]

Proposed resolution:

This wording is relative to N5014.

  1. Modify 21.4.7 [meta.reflection.queries] as indicated:

    consteval bool has_internal_linkage(info r);
    consteval bool has_module_linkage(info r);
    consteval bool has_external_linkage(info r);
    consteval bool has_c_language_linkage(info r);
    consteval bool has_linkage(info r);
    

    -25- Returns: true if r represents a variable, function, type, template, or namespace whose name has internal linkage, module linkage, C languageexternal linkage, or any linkage, respectively (6.7 [basic.link]). Otherwise, false.

    consteval bool has_c_language_linkage(info r);
    

    -??- Returns: true if r represents a variable, function, or function type with C language linkage. Otherwise, false.