microsoft / microsoft/vscode-cpptools

Parameter pack was not expanded error reported in macro argument

Open
#13,329 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug Language Service parser
Dominant language
TypeScript
Stars
6.2k
Forks
1.7k
Avg merge
14h 46m
Merged PRs (30d)
61

Description

Environment
  • OS and Version: Windows 11
  • VS Code Version: 1.97.2
  • C/C++ Extension Version: 1.23.6
  • If using SSH remote, specify OS of remote machine: WSL Ubuntu 24.04.2
Bug Summary and Steps to Reproduce

Bug Summary:

I've defined a macro which takes a template parameter pack variable and expands it internally as the following:

#define FOR_ENUMERATE(T, I, expr)                                              \
    [&]<size_t... I>(std::index_sequence<I...>) {                              \
        ((expr), ...);                                                         \
    }(std::index_sequence_for<T...>{});

And I call it like this:

template <typename... T>
void foo() {
    FOR_ENUMERATE(T, I, (bar<I, T>()));
}

This compiles just fine with g++ 14.2.0, which I have set as the default compiler for intellisense. However in VS Code the pack variable T is underlined (in both macro arguments) displaying the error: "parameter pack "T" was referenced but not expanded C/C++(1919)".

Steps to reproduce:
Enter the example code in a C++ source file in VS Code (full example below)

Expected behavior:
There are no errors reported.

Configuration and Logs
c_cpp_properties.json:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "cStandard": "c17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}


C/C++: Log Diagnostics:

-------- Diagnostics - 3/1/2025, 11:30:11 PM
Version: 1.23.6
Current Configuration:
{
    "name": "Linux",
    "includePath": [
        "/mnt/c/Users/rmcca/Documents/coding/cpp/**"
    ],
    "defines": [],
    "cStandard": "c17",
    "intelliSenseMode": "linux-gcc-x64",
    "compilerPathIsExplicit": true,
    "cStandardIsExplicit": true,
    "cppStandardIsExplicit": true,
    "intelliSenseModeIsExplicit": true,
    "cppStandard": "c++23",
    "mergeConfigurations": false,
    "compilerPath": "/usr/bin/g++-14",
    "browse": {
        "path": [
            "/mnt/c/Users/rmcca/Documents/coding/cpp/**",
            "${workspaceFolder}"
        ],
        "limitSymbolsToIncludedHeaders": true
    }
}
Modified Settings:
{
    "C_Cpp.default.compilerPath": "/usr/bin/g++-14",
    "C_Cpp.default.cppStandard": "c++23",
    "C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: LLVM, IndentWidth: 4, PointerAlignment: Left, AlwaysBreakTemplateDeclarations: Yes, ColumnLimit: 80 }"
}
Additional Tracked Settings:
{
    "editorTabSize": 4,
    "editorInsertSpaces": true,
    "editorAutoClosingBrackets": "languageDefined",
    "filesEncoding": "utf8",
    "filesAssociations": {
        "*.s": "asm",
        ".clang-format": "yaml",
        "algorithm": "cpp",
        "array": "cpp",
        "atomic": "cpp",
        "bit": "cpp",
        "cctype": "cpp",
        "charconv": "cpp",
        "chrono": "cpp",
        "clocale": "cpp",
        "cmath": "cpp",
        "codecvt": "cpp",
        "compare": "cpp",
        "concepts": "cpp",
        "cstddef": "cpp",
        "cstdint": "cpp",
        "cstdio": "cpp",
        "cstdlib": "cpp",
        "cstring": "cpp",
        "ctime": "cpp",
        "cwchar": "cpp",
        "exception": "cpp",
        "filesystem": "cpp",
        "format": "cpp",
        "forward_list": "cpp",
        "fstream": "cpp",
        "functional": "cpp",
        "initializer_list": "cpp",
        "iomanip": "cpp",
        "ios": "cpp",
        "iosfwd": "cpp",
        "iostream": "cpp",
        "istream": "cpp",
        "iterator": "cpp",
        "limits": "cpp",
        "list": "cpp",
        "locale": "cpp",
        "map": "cpp",
        "memory": "cpp",
        "mutex": "cpp",
        "new": "cpp",
        "optional": "cpp",
        "ostream": "cpp",
        "ratio": "cpp",
        "span": "cpp",
        "sstream": "cpp",
        "stdexcept": "cpp",
        "stop_token": "cpp",
        "streambuf": "cpp",
        "string": "cpp",
        "system_error": "cpp",
        "thread": "cpp",
        "tuple": "cpp",
        "type_traits": "cpp",
        "typeinfo": "cpp",
        "unordered_map": "cpp",
        "utility": "cpp",
        "variant": "cpp",
        "vector": "cpp",
        "xfacet": "cpp",
        "xhash": "cpp",
        "xiosbase": "cpp",
        "xlocale": "cpp",
        "xlocbuf": "cpp",
        "xlocinfo": "cpp",
        "xlocmes": "cpp",
        "xlocmon": "cpp",
        "xlocnum": "cpp",
        "xloctime": "cpp",
        "xmemory": "cpp",
        "xstddef": "cpp",
        "xstring": "cpp",
        "xtr1common": "cpp",
        "xtree": "cpp",
        "xutility": "cpp"
    },
    "filesExclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/CVS": true,
        "**/.DS_Store": true,
        "**/Thumbs.db": true
    },
    "filesAutoSaveAfterDelay": false,
    "editorInlayHintsEnabled": true,
    "editorParameterHintsEnabled": true,
    "searchExclude": {
        "**/node_modules": true,
        "**/bower_components": true,
        "**/*.code-search": true
    },
    "workbenchSettingsEditor": "ui"
}
cpptools version (native): 1.23.6.0
Current database path: /home/ryan/.cache/vscode-cpptools/c35dc47883d8936eebad2f3c209bd407/.browse.VC.db
Translation Unit Mappings:
[ /mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp - source TU]:
Translation Unit Configurations:
[ /mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp ]
    Process ID: 20359
    Memory Usage: 32 MB
    Compiler Path: /usr/bin/g++-14
    Includes:
    System Includes:
        /usr/include/c++/14
        /usr/include/x86_64-linux-gnu/c++/14
        /usr/include/c++/14/backward
        /usr/lib/gcc/x86_64-linux-gnu/14/include
        /usr/local/include
        /usr/include/x86_64-linux-gnu
        /usr/include
    Standard Version: c++23
    IntelliSense Mode: linux-gcc-x64
    Other Flags:
        --g++
        --gnu_version=140200
Total Memory Usage: 32 MB

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 10997


Language server logging:

LSP: (received) cpptools/restartIntelliSenseForFile: file:///mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp
LSP: (invoked) cpptools/restartIntelliSenseForFile: file:///mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp
Shutting down IntelliSense server: /mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp
Intellisense update pending for: file:///mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp
IntelliSense update scheduled and TU acquisition started for: file:///mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp
Resolving recursive includes...
tag parsing file: /mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp
Done resolving recursive includes.
sending compilation args for /mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp
  system include: /usr/include/c++/14
  system include: /usr/include/x86_64-linux-gnu/c++/14
  system include: /usr/include/c++/14/backward
  system include: /usr/lib/gcc/x86_64-linux-gnu/14/include
  system include: /usr/local/include
  system include: /usr/include/x86_64-linux-gnu
  system include: /usr/include
  define: __DBL_MIN_EXP__=(-1021)
  define: __UINT_LEAST16_MAX__=0xffff
  define: __FLT16_HAS_QUIET_NAN__=1
  define: __ATOMIC_ACQUIRE=2
  define: __FLT128_MAX_10_EXP__=4932
  define: __FLT_MIN__=1.17549435082228750796873653722224568e-38F
  define: __GCC_IEC_559_COMPLEX=2
  define: __UINT_LEAST8_TYPE__=unsigned char
  define: __SIZEOF_FLOAT80__=16
  define: __BFLT16_DENORM_MIN__=9.18354961579912115600575419704879436e-41BF16
  define: __INTMAX_C(c)=c ## L
  define: __CHAR_BIT__=8
  define: __UINT8_MAX__=0xff
  define: __SCHAR_WIDTH__=8
  define: __WINT_MAX__=0xffffffffU
  define: __FLT32_MIN_EXP__=(-125)
  define: __BFLT16_MIN_10_EXP__=(-37)
  define: __ORDER_LITTLE_ENDIAN__=1234
  define: __WCHAR_MAX__=0x7fffffff
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1
  define: __GCC_ATOMIC_CHAR_LOCK_FREE=2
  define: __GCC_IEC_559=2
  define: __FLT32X_DECIMAL_DIG__=17
  define: __FLT_EVAL_METHOD__=0
  define: __FLT64_DECIMAL_DIG__=17
  define: __CET__=3
  define: __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2
  define: __UINT_FAST64_MAX__=0xffffffffffffffffUL
  define: __SIG_ATOMIC_TYPE__=int
  define: __DBL_MIN_10_EXP__=(-307)
  define: __FINITE_MATH_ONLY__=0
  define: __FLT32X_MAX_EXP__=1024
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1
  define: __FLT32_HAS_DENORM__=1
  define: __UINT_FAST8_MAX__=0xff
  define: __DEC64_MAX_EXP__=385
  define: __INT8_C(c)=c
  define: __LDBL_HAS_INFINITY__=1
  define: __INT_LEAST8_WIDTH__=8
  define: __UINT_LEAST64_MAX__=0xffffffffffffffffUL
  define: __INT_LEAST8_MAX__=0x7f
  define: __SHRT_MAX__=0x7fff
  define: __LDBL_MAX__=1.18973149535723176502126385303097021e+4932L
  define: __FLT64X_MAX_10_EXP__=4932
  define: __BFLT16_MAX_10_EXP__=38
  define: __BFLT16_MAX_EXP__=128
  define: __LDBL_IS_IEC_60559__=1
  define: __FLT64X_HAS_QUIET_NAN__=1
  define: __UINT_LEAST8_MAX__=0xff
  define: __GCC_ATOMIC_BOOL_LOCK_FREE=2
  define: __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128
  define: __UINTMAX_TYPE__=long unsigned int
  define: __BFLT16_DECIMAL_DIG__=4
  define: __linux=1
  define: __DEC32_EPSILON__=1E-6DF
  define: __FLT_EVAL_METHOD_TS_18661_3__=0
  define: __UINT32_MAX__=0xffffffffU
  define: __GXX_EXPERIMENTAL_CXX0X__=1
  define: __DBL_DENORM_MIN__=double(4.94065645841246544176568792868221372e-324L)
  define: __FLT128_MIN_EXP__=(-16381)
  define: __WINT_MIN__=0U
  define: __FLT128_MIN_10_EXP__=(-4931)
  define: __FLT32X_IS_IEC_60559__=1
  define: __INT_LEAST16_WIDTH__=16
  define: __SCHAR_MAX__=0x7f
  define: __FLT128_MANT_DIG__=113
  define: __WCHAR_MIN__=(-__WCHAR_MAX__ - 1)
  define: __INT64_C(c)=c ## L
  define: __SSP_STRONG__=3
  define: __GCC_ATOMIC_POINTER_LOCK_FREE=2
  define: __ATOMIC_SEQ_CST=5
  define: __unix=1
  define: __INT_LEAST64_MAX__=0x7fffffffffffffffL
  define: __STDCPP_FLOAT32_T__=1
  define: __STDCPP_BFLOAT16_T__=1
  define: __FLT32X_MANT_DIG__=53
  define: __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2
  define: __FLT32_MAX_10_EXP__=38
  define: __FLT64X_EPSILON__=1.08420217248550443400745280086994171e-19F64x
  define: __STDC_HOSTED__=1
  define: __DEC64_MIN_EXP__=(-382)
  define: __DBL_DIG__=15
  define: __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F
  define: __GXX_WEAK__=1
  define: __SHRT_WIDTH__=16
  define: __FLT32_IS_IEC_60559__=1
  define: __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L
  define: __DBL_IS_IEC_60559__=1
  define: __DEC32_MAX__=9.999999E96DF
  define: __CHAR8_TYPE__=unsigned char
  define: __FLT64X_DENORM_MIN__=3.64519953188247460252840593361941982e-4951F64x
  define: __FLT32X_HAS_INFINITY__=1
  define: __unix__=1
  define: __INT_WIDTH__=32
  define: __STDC_IEC_559__=1
  define: __STDC_ISO_10646__=201706L
  define: __GCC_ATOMIC_CHAR8_T_LOCK_FREE=2
  define: __DECIMAL_DIG__=21
  define: __STDC_IEC_559_COMPLEX__=1
  define: __FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64
  define: __gnu_linux__=1
  define: __INT16_MAX__=0x7fff
  define: __FLT64_MIN_EXP__=(-1021)
  define: __FLT64X_MIN_10_EXP__=(-4931)
  define: __LDBL_HAS_QUIET_NAN__=1
  define: __FLT16_MIN_EXP__=(-13)
  define: __FLT64_MANT_DIG__=53
  define: __FLT64X_MANT_DIG__=64
  define: __BFLT16_DIG__=2
  define: __GNUC__=14
  define: __GXX_RTTI=1
  define: __pie__=2
  define: __MMX__=1
  define: __FLT_HAS_DENORM__=1
  define: __SIZEOF_LONG_DOUBLE__=16
  define: __BIGGEST_ALIGNMENT__=16
  define: __STDC_UTF_16__=1
  define: __FLT64_MAX_10_EXP__=308
  define: __BFLT16_IS_IEC_60559__=0
  define: __STDCPP_FLOAT128_T__=1
  define: __FLT16_MAX_10_EXP__=4
  define: __DBL_MAX__=double(1.79769313486231570814527423731704357e+308L)
  define: __INT_FAST32_MAX__=0x7fffffffffffffffL
  define: __DBL_HAS_INFINITY__=1
  define: __INT64_MAX__=0x7fffffffffffffffL
  define: __SIZEOF_FLOAT__=4
  define: __HAVE_SPECULATION_SAFE_VALUE=1
  define: __DEC32_MIN_EXP__=(-94)
  define: __INTPTR_WIDTH__=64
  define: __UINT_LEAST32_MAX__=0xffffffffU
  define: __FLT32X_HAS_DENORM__=1
  define: __INT_FAST16_TYPE__=long int
  define: __STRICT_ANSI__=1
  define: __MMX_WITH_SSE__=1
  define: __LDBL_HAS_DENORM__=1
  define: __SEG_GS=1
  define: __BFLT16_EPSILON__=7.81250000000000000000000000000000000e-3BF16
  define: __cplusplus=202302L
  define: __DEC32_MIN__=1E-95DF
  define: __DEPRECATED=1
  define: __DBL_MAX_EXP__=1024
  define: __WCHAR_WIDTH__=32
  define: __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32
  define: __DEC128_EPSILON__=1E-33DL
  define: __FLT16_DECIMAL_DIG__=5
  define: __SSE2_MATH__=1
  define: __ATOMIC_HLE_RELEASE=131072
  define: __PTRDIFF_MAX__=0x7fffffffffffffffL
  define: __amd64=1
  define: __STDCPP_FLOAT64_T__=1
  define: __ATOMIC_HLE_ACQUIRE=65536
  define: __GNUG__=14
  define: __LONG_LONG_MAX__=0x7fffffffffffffffLL
  define: __SIZEOF_SIZE_T__=8
  define: __BFLT16_HAS_INFINITY__=1
  define: __FLT64X_MIN_EXP__=(-16381)
  define: __SIZEOF_WINT_T__=4
  define: __FLT32X_DIG__=15
  define: __LONG_LONG_WIDTH__=64
  define: __FLT32_MAX_EXP__=128
  define: __GXX_ABI_VERSION=1019
  define: __FLT_MIN_EXP__=(-125)
  define: __GCC_HAVE_DWARF2_CFI_ASM=1
  define: __x86_64=1
  define: __INT_FAST64_TYPE__=long int
  define: __BFLT16_MAX__=3.38953138925153547590470800371487867e+38BF16
  define: __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64
  define: __FLT16_DENORM_MIN__=5.96046447753906250000000000000000000e-8F16
  define: __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128
  define: __FLT64X_NORM_MAX__=1.18973149535723176502126385303097021e+4932F64x
  define: __SIZEOF_POINTER__=8
  define: __SIZE_TYPE__=long unsigned int
  define: __LP64__=1
  define: __DBL_HAS_QUIET_NAN__=1
  define: __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x
  define: __LDBL_MAX_EXP__=16384
  define: __DECIMAL_BID_FORMAT__=1
  define: __FLT64_MIN_10_EXP__=(-307)
  define: __FLT16_MIN_10_EXP__=(-4)
  define: __FLT64X_DECIMAL_DIG__=21
  define: __DEC128_MIN__=1E-6143DL
  define: __REGISTER_PREFIX__=
  define: __UINT16_MAX__=0xffff
  define: __FLT128_HAS_INFINITY__=1
  define: __FLT32_MIN__=1.17549435082228750796873653722224568e-38F32
  define: __UINT8_TYPE__=unsigned char
  define: __FLT_DIG__=6
  define: __NO_INLINE__=1
  define: __DEC_EVAL_METHOD__=2
  define: __FLT_MANT_DIG__=24
  define: __LDBL_DECIMAL_DIG__=21
  define: __VERSION__="14.2.0"
  define: __UINT64_C(c)=c ## UL
  define: _STDC_PREDEF_H=1
  define: __INT_LEAST32_MAX__=0x7fffffff
  define: __GCC_ATOMIC_INT_LOCK_FREE=2
  define: __FLT128_MAX_EXP__=16384
  define: __FLT32_MANT_DIG__=24
  define: __FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__
  define: __FLT32X_MIN_EXP__=(-1021)
  define: __STDC_IEC_60559_COMPLEX__=201404L
  define: __BFLT16_MIN__=1.17549435082228750796873653722224568e-38BF16
  define: __FLT128_HAS_DENORM__=1
  define: __FLT32_DECIMAL_DIG__=9
  define: __FLT128_DIG__=33
  define: __INT32_C(c)=c
  define: __DEC64_EPSILON__=1E-15DD
  define: __ORDER_PDP_ENDIAN__=3412
  define: __DEC128_MIN_EXP__=(-6142)
  define: __DEC128_MAX__=9.999999999999999999999999999999999E6144DL
  define: __INT_FAST32_TYPE__=long int
  define: __UINT_LEAST16_TYPE__=short unsigned int
  define: __DEC128_MAX_EXP__=6145
  define: __DBL_HAS_DENORM__=1
  define: __UINT64_MAX__=0xffffffffffffffffUL
  define: __FLT_IS_IEC_60559__=1
  define: __GNUC_WIDE_EXECUTION_CHARSET_NAME="UTF-32LE"
  define: __FLT64X_DIG__=18
  define: __INT8_TYPE__=signed char
  define: __ELF__=1
  define: __GCC_ASM_FLAG_OUTPUTS__=1
  define: __UINT32_TYPE__=unsigned int
  define: __BFLT16_HAS_QUIET_NAN__=1
  define: __FLT_RADIX__=2
  define: __INT_LEAST16_TYPE__=short int
  define: __LDBL_EPSILON__=1.08420217248550443400745280086994171e-19L
  define: __UINTMAX_C(c)=c ## UL
  define: __FLT16_DIG__=3
  define: __k8=1
  define: __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x
  define: __SIG_ATOMIC_MAX__=0x7fffffff
  define: __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2
  define: __USER_LABEL_PREFIX__=
  define: __STDC_IEC_60559_BFP__=201404L
  define: __SIZEOF_PTRDIFF_T__=8
  define: __FLT64X_HAS_INFINITY__=1
  define: __SIZEOF_LONG__=8
  define: __LDBL_DIG__=18
  define: __FLT64_IS_IEC_60559__=1
  define: __x86_64__=1
  define: __FLT16_IS_IEC_60559__=1
  define: __FLT16_MAX_EXP__=16
  define: __DEC32_SUBNORMAL_MIN__=0.000001E-95DF
  define: __INT_FAST16_MAX__=0x7fffffffffffffffL
  define: __GCC_CONSTRUCTIVE_SIZE=64
  define: __FLT64_DIG__=15
  define: __UINT_FAST32_MAX__=0xffffffffffffffffUL
  define: __UINT_LEAST64_TYPE__=long unsigned int
  define: __FLT16_EPSILON__=9.76562500000000000000000000000000000e-4F16
  define: __FLT_HAS_QUIET_NAN__=1
  define: __FLT_MAX_10_EXP__=38
  define: __FLT64X_HAS_DENORM__=1
  define: __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL
  define: __FLT_HAS_INFINITY__=1
  define: __GNUC_EXECUTION_CHARSET_NAME="UTF-8"
  define: __UINT_FAST16_TYPE__=long unsigned int
  define: __DEC64_MAX__=9.999999999999999E384DD
  define: __INT_FAST32_WIDTH__=64
  define: __CHAR16_TYPE__=short unsigned int
  define: __PRAGMA_REDEFINE_EXTNAME=1
  define: __SIZE_WIDTH__=64
  define: __SEG_FS=1
  define: __INT_LEAST16_MAX__=0x7fff
  define: __FLT16_NORM_MAX__=6.55040000000000000000000000000000000e+4F16
  define: __DEC64_MANT_DIG__=16
  define: __FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32
  define: __SIG_ATOMIC_WIDTH__=32
  define: __INT_LEAST64_TYPE__=long int
  define: __INT16_TYPE__=short int
  define: __INT_LEAST8_TYPE__=signed char
  define: __FLT16_MAX__=6.55040000000000000000000000000000000e+4F16
  define: __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128
  define: __SIZEOF_INT__=4
  define: __DEC32_MAX_EXP__=97
  define: __INT_FAST8_MAX__=0x7f
  define: __FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128
  define: __INTPTR_MAX__=0x7fffffffffffffffL
  define: __FLT64_HAS_QUIET_NAN__=1
  define: __FLT32_MIN_10_EXP__=(-37)
  define: __EXCEPTIONS=1
  define: __UINT16_C(c)=c
  define: __PTRDIFF_WIDTH__=64
  define: __LDBL_MANT_DIG__=64
  define: __INT_FAST16_WIDTH__=64
  define: __FLT64_HAS_INFINITY__=1
  define: __FLT64X_MAX__=1.18973149535723176502126385303097021e+4932F64x
  define: __FLT16_HAS_INFINITY__=1
  define: __STDCPP_DEFAULT_NEW_ALIGNMENT__=16
  define: __SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)
  define: __code_model_small__=1
  define: __GCC_ATOMIC_LONG_LOCK_FREE=2
  define: __DEC32_MANT_DIG__=7
  define: __k8__=1
  define: __INTPTR_TYPE__=long int
  define: __UINT16_TYPE__=short unsigned int
  define: __WCHAR_TYPE__=int
  define: __pic__=2
  define: __STDCPP_FLOAT16_T__=1
  define: __UINTPTR_MAX__=0xffffffffffffffffUL
  define: __INT_FAST64_WIDTH__=64
  define: __INT_FAST64_MAX__=0x7fffffffffffffffL
  define: __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1
  define: __FLT_NORM_MAX__=3.40282346638528859811704183484516925e+38F
  define: __FLT32_HAS_INFINITY__=1
  define: __FLT64X_MAX_EXP__=16384
  define: __UINT_FAST64_TYPE__=long unsigned int
  define: __BFLT16_MIN_EXP__=(-125)
  define: __INT_MAX__=0x7fffffff
  define: __linux__=1
  define: __INT64_TYPE__=long int
  define: __FLT_MAX_EXP__=128
  define: __ORDER_BIG_ENDIAN__=4321
  define: __DBL_MANT_DIG__=53
  define: __SIZEOF_FLOAT128__=16
  define: __BFLT16_MANT_DIG__=8
  define: __DEC64_MIN__=1E-383DD
  define: __WINT_TYPE__=unsigned int
  define: __UINT_LEAST32_TYPE__=unsigned int
  define: __SIZEOF_SHORT__=2
  define: __FLT32_NORM_MAX__=3.40282346638528859811704183484516925e+38F32
  define: __SSE__=1
  define: __LDBL_MIN_EXP__=(-16381)
  define: __FLT64_MAX__=1.79769313486231570814527423731704357e+308F64
  define: __amd64__=1
  define: __WINT_WIDTH__=32
  define: __INT_LEAST64_WIDTH__=64
  define: __FLT32X_MAX_10_EXP__=308
  define: __SIZEOF_INT128__=16
  define: __FLT16_MIN__=6.10351562500000000000000000000000000e-5F16
  define: __FLT64X_IS_IEC_60559__=1
  define: __LDBL_MAX_10_EXP__=4932
  define: __ATOMIC_RELAXED=0
  define: __DBL_EPSILON__=double(2.22044604925031308084726333618164062e-16L)
  define: __INT_LEAST32_TYPE__=int
  define: _LP64=1
  define: __UINT8_C(c)=c
  define: __FLT64_MAX_EXP__=1024
  define: __SIZEOF_WCHAR_T__=4
  define: __GNUC_PATCHLEVEL__=0
  define: __FLT128_NORM_MAX__=1.18973149535723176508575932662800702e+4932F128
  define: __FLT64_NORM_MAX__=1.79769313486231570814527423731704357e+308F64
  define: __FLT128_HAS_QUIET_NAN__=1
  define: __INTMAX_MAX__=0x7fffffffffffffffL
  define: __INT_FAST8_TYPE__=signed char
  define: __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x
  define: __STDCPP_THREADS__=1
  define: __BFLT16_HAS_DENORM__=1
  define: __GNUC_STDC_INLINE__=1
  define: __FLT64_HAS_DENORM__=1
  define: __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32
  define: __FLT16_HAS_DENORM__=1
  define: __DBL_DECIMAL_DIG__=17
  define: __STDC_UTF_32__=1
  define: __INT_FAST8_WIDTH__=8
  define: __FXSR__=1
  define: __FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x
  define: __DBL_NORM_MAX__=double(1.79769313486231570814527423731704357e+308L)
  define: __BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__
  define: __GCC_DESTRUCTIVE_SIZE=64
  define: __INTMAX_WIDTH__=64
  define: __FLT32_DIG__=6
  define: __UINT64_TYPE__=long unsigned int
  define: __UINT32_C(c)=c ## U
  define: __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F
  define: __FLT128_IS_IEC_60559__=1
  define: __INT8_MAX__=0x7f
  define: __LONG_WIDTH__=64
  define: __DBL_MIN__=double(2.22507385850720138309023271733240406e-308L)
  define: __PIC__=2
  define: __INT32_MAX__=0x7fffffff
  define: __UINT_FAST32_TYPE__=long unsigned int
  define: __FLT16_MANT_DIG__=11
  define: __FLT32X_NORM_MAX__=1.79769313486231570814527423731704357e+308F32x
  define: __CHAR32_TYPE__=unsigned int
  define: __FLT_MAX__=3.40282346638528859811704183484516925e+38F
  define: __SSE2__=1
  define: __BFLT16_NORM_MAX__=3.38953138925153547590470800371487867e+38BF16
  define: __INT32_TYPE__=int
  define: __SIZEOF_DOUBLE__=8
  define: __FLT_MIN_10_EXP__=(-37)
  define: __FLT64_MIN__=2.22507385850720138309023271733240406e-308F64
  define: __INT_LEAST32_WIDTH__=32
  define: __INTMAX_TYPE__=long int
  define: __FLT32X_HAS_QUIET_NAN__=1
  define: __ATOMIC_CONSUME=1
  define: __GNUC_MINOR__=2
  define: __UINTMAX_MAX__=0xffffffffffffffffUL
  define: __PIE__=2
  define: __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x
  define: __DBL_MAX_10_EXP__=308
  define: __LDBL_DENORM_MIN__=3.64519953188247460252840593361941982e-4951L
  define: __INT16_C(c)=c
  define: __STDC__=1
  define: __PTRDIFF_TYPE__=long int
  define: __LONG_MAX__=0x7fffffffffffffffL
  define: __FLT32X_MIN_10_EXP__=(-307)
  define: __UINTPTR_TYPE__=long unsigned int
  define: __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD
  define: __DEC128_MANT_DIG__=34
  define: __LDBL_MIN_10_EXP__=(-4931)
  define: __SSE_MATH__=1
  define: __SIZEOF_LONG_LONG__=8
  define: __FLT128_DECIMAL_DIG__=36
  define: __GCC_ATOMIC_LLONG_LOCK_FREE=2
  define: __FLT32_HAS_QUIET_NAN__=1
  define: __FLT_DECIMAL_DIG__=9
  define: __UINT_FAST16_MAX__=0xffffffffffffffffUL
  define: __LDBL_NORM_MAX__=1.18973149535723176502126385303097021e+4932L
  define: __GCC_ATOMIC_SHORT_LOCK_FREE=2
  define: __SIZE_MAX__=0xffffffffffffffffUL
  define: __UINT_FAST8_TYPE__=unsigned char
  define: _GNU_SOURCE=1
  define: __ATOMIC_ACQ_REL=4
  define: __ATOMIC_RELEASE=3
  other: --g++
  other: --gnu_version=140200
  stdver: c++23
  intelliSenseMode: linux-gcc-x64
Update IntelliSense time (sec): 0.148
LSP: (received) cpptools/getFoldingRanges: file:///mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp (id: 6233)
LSP: (invoked) cpptools/getFoldingRanges: file:///mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp (id: 6233)
LSP: Sending response (id: 6233)
LSP: (received) cpptools/getFoldingRanges: file:///mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp (id: 6234)
LSP: (invoked) cpptools/getFoldingRanges: file:///mnt/c/Users/rmcca/Documents/coding/cpp/temp.cpp (id: 6234)
LSP: Sending response (id: 6234)
Other Extensions

No response

Additional context

Full code to reproduce:

#include <cstddef>
#include <utility>

#define FOR_ENUMERATE(T, I, expr)                                              \
    [&]<size_t... I>(std::index_sequence<I...>) {                              \
        ((expr), ...);                                                         \
    }(std::index_sequence_for<T...>{})

template <size_t I, typename T>
void bar() {}
    
template <typename... T>
void foo() {
    FOR_ENUMERATE(T, I, (bar<I, T>()));
}

int main() {
    foo<int, float>();
}

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.

Research direction

Start with temp.cpp and the supplied macro reproduction, then inspect the IntelliSense diagnostics for C/C++(1919) under the logged C++23 and g++14 configuration. Done means the valid example no longer reports the parameter-pack diagnostic while its expected compilation behavior remains unchanged.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, typescript, vscode
Domain
devtools, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.