microsoft / microsoft/vscode-cpptools
IntelliSense fails on zero-initialization of non-type template parameter
Nessuno ha ancora preso questa issue.
- Lingua principale
- TypeScript
- Stelle
- 6.2k
- Fork
- 1.7k
- Merge medio
- 14h 46m
- PR unite (30g)
- 61
Descrizione
Environment
- OS and Version: Windows 11 Home 23H2 22631.4751
- VS Code Version: 1.94.2
- C/C++ Extension Version: v1.23.6
- If using SSH remote, specify OS of remote machine: Red Hat Enterprise Linux 9.5 (Plow)
Bug Summary and Steps to Reproduce
Bug Summary:
When providing zero-initialization for a non-type template parameter as a default value, IntelliSense marks it with red squiggles and reports "expected an expression C/C++(29)". However, after playing with Godbolt, I found that this code builds well since GCC 10.3, Clang 18.1, and MSVC v19.29 VS16.11.
Minimal working example:
template<unsigned N = 0>
class fixed_string {
public:
char m_buffer[N > 0 ? N : 1]{};
consteval fixed_string() requires (N == 0) {}
consteval fixed_string(const char str[N]) {
for (unsigned i = 0; i < N; ++i) m_buffer[i] = str[i];
}
};
template<unsigned N> fixed_string(const char (&)[N]) -> fixed_string<N>;
template<fixed_string str = {}>
struct Foo {};
Expected behavior:
The zero-initialization should use the default constructor, as the template parameter N should default to 0.
Configuration and Logs
Configurations in c_cpp_properties.json:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compilerPath": "/usr/bin/g++",
"intelliSenseMode": "linux-gcc-x64",
"cppStandard": "c++20",
"browse": {
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
Logs from running C/C++: Log Diagnostics from the VS Code command palette:
-------- Diagnostics - 3/24/2025, 8:36:12 PM
Version: 1.23.6
Current Configuration:
{
"name": "Linux",
"includePath": [
"/afs/cern.ch/user/f/fiedlerp/test/**"
],
"defines": [],
"compilerPath": "/usr/bin/g++",
"intelliSenseMode": "linux-gcc-x64",
"cppStandard": "c++20",
"browse": {
"limitSymbolsToIncludedHeaders": true,
"path": [
"/afs/cern.ch/user/f/fiedlerp/test/**",
"${workspaceFolder}"
]
},
"compilerPathIsExplicit": true,
"cStandardIsExplicit": true,
"cppStandardIsExplicit": true,
"intelliSenseModeIsExplicit": true,
"compilerPathInCppPropertiesJson": "/usr/bin/g++",
"cStandard": "c17",
"mergeConfigurations": false
}
Modified Settings:
{
"C_Cpp.autocompleteAddParentheses": true,
"C_Cpp.default.cStandard": "c17",
"C_Cpp.default.cppStandard": "c++20",
"C_Cpp.vcFormat.indent.caseLabels": true,
"C_Cpp.vcFormat.indent.preprocessor": "none",
"C_Cpp.vcFormat.newLine.beforeOpenBrace.namespace": "sameLine",
"C_Cpp.vcFormat.newLine.beforeOpenBrace.type": "sameLine",
"C_Cpp.vcFormat.newLine.beforeOpenBrace.function": "sameLine",
"C_Cpp.vcFormat.newLine.beforeOpenBrace.block": "sameLine",
"C_Cpp.vcFormat.newLine.beforeOpenBrace.lambda": "sameLine",
"C_Cpp.vcFormat.newLine.closeBraceSameLine.emptyType": true,
"C_Cpp.vcFormat.newLine.closeBraceSameLine.emptyFunction": true,
"C_Cpp.vcFormat.newLine.beforeCatch": false,
"C_Cpp.vcFormat.newLine.beforeElse": false,
"C_Cpp.vcFormat.space.afterCastCloseParenthesis": true,
"C_Cpp.vcFormat.space.betweenEmptyBraces": true,
"C_Cpp.vcFormat.wrap.preserveBlocks": "allOneLineScopes",
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, AccessModifierOffset: -2, AlignAfterOpenBracket: Align, AlignConsecutiveAssignments: Consecutive, AlignConsecutiveBitFields: AcrossComments, AlignConsecutiveDeclarations: None, AlignConsecutiveMacros: AcrossComments, AlignEscapedNewlines: Left, AlignOperands: AlignAfterOperator, AlignTrailingComments: true, AllowAllArgumentsOnNextLine: true, AllowAllConstructorInitializersOnNextLine: true, AllowAllParametersOfDeclarationOnNextLine: true, AllowShortBlocksOnASingleLine: Always, AllowShortCaseLabelsOnASingleLine: false, AllowShortEnumsOnASingleLine: false, AllowShortFunctionsOnASingleLine: Empty, AllowShortIfStatementsOnASingleLine: Always, AllowShortLambdasOnASingleLine: Empty, AllowShortLoopsOnASingleLine: true, AlwaysBreakAfterDefinitionReturnType: None, AlwaysBreakAfterReturnType: None, AlwaysBreakBeforeMultilineStrings: false, AlwaysBreakTemplateDeclarations: Yes, BinPackArguments: true, BinPackParameters: true, BitFieldColonSpacing: Both, BraceWrapping: { AfterCaseLabel: false, AfterClass: false, AfterControlStatement: Never, AfterEnum: false, AfterFunction: false, AfterNamespace: false, AfterStruct: false, AfterUnion: false, AfterExternBlock: false, BeforeCatch: false, BeforeElse: false, BeforeLambdaBody: false, BeforeWhile: false, IndentBraces: false, SplitEmptyFunction: false, SplitEmptyRecord: false, SplitEmptyNamespace: false }, BreakBeforeBinaryOperators: NonAssignment, BreakBeforeBraces: Custom, BreakBeforeConceptDeclarations: true, BreakBeforeTernaryOperators: true, BreakConstructorInitializers: BeforeColon, BreakInheritanceList: BeforeColon, BreakStringLiterals: true, ColumnLimit: 0, CompactNamespaces: false, ConstructorInitializerAllOnOneLineOrOnePerLine: false, ConstructorInitializerIndentWidth: 2, ContinuationIndentWidth: 2, Cpp11BracedListStyle: false, DeriveLineEnding: true, DerivePointerAlignment: true, EmptyLineBeforeAccessModifier: Always, ExperimentalAutoDetectBinPacking: false, FixNamespaceComments: true, IncludeBlocks: Preserve, IndentCaseBlocks: false, IndentCaseLabels: true, IndentExternBlock: Indent, IndentGotoLabels: true, IndentPPDirectives: BeforeHash, IndentRequires: false, IndentWidth: 4, IndentWrappedFunctionNames: false, InsertTrailingCommas: None, KeepEmptyLinesAtTheStartOfBlocks: false, Language: Cpp, MaxEmptyLinesToKeep: 1, NamespaceIndentation: All, PointerAlignment: Left, ReflowComments: true, SortIncludes: true, SortUsingDeclarations: true, SpaceAfterCStyleCast: true, SpaceAfterLogicalNot: false, SpaceAfterTemplateKeyword: true, SpaceAroundPointerQualifiers: After, SpaceBeforeAssignmentOperators: true, SpaceBeforeCaseColon: false, SpaceBeforeCpp11BracedList: true, SpaceBeforeCtorInitializerColon: true, SpaceBeforeInheritanceColon: true, SpaceBeforeParens: ControlStatements, SpaceBeforeRangeBasedForLoopColon: true, SpaceBeforeSquareBrackets: false, SpaceInEmptyBlock: true, SpaceInEmptyParentheses: false, SpacesBeforeTrailingComments: 1, SpacesInAngles: false, SpacesInCStyleCastParentheses: false, SpacesInConditionalStatement: false, SpacesInParentheses: false, SpacesInSquareBrackets: false, Standard: c++20, TabWidth: 4, UseCRLF: false, UseTab: Never }",
"C_Cpp.debugShortcut": false,
"C_Cpp.loggingLevel": "Warning"
}
Additional Tracked Settings:
{
"editorTabSize": 4,
"editorInsertSpaces": true,
"editorAutoClosingBrackets": "languageDefined",
"filesEncoding": "utf8",
"filesAssociations": {},
"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: /afs/cern.ch/user/f/fiedlerp/.cache/vscode-cpptools/421312d573434366108b24a8c8563c75/.browse.VC.db
Translation Unit Mappings:
[ /afs/cern.ch/user/f/fiedlerp/test/test.cxx - source TU]:
Translation Unit Configurations:
[ /afs/cern.ch/user/f/fiedlerp/test/test.cxx ]
Process ID: 1718852
Memory Usage: 15 MB
Compiler Path: /usr/bin/g++
Includes:
System Includes:
.
/afs/cern.ch/user/f/fiedlerp/include
/usr/include/c++/11
/usr/include/c++/11/x86_64-redhat-linux
/usr/include/c++/11/backward
/usr/lib/gcc/x86_64-redhat-linux/11/include
/usr/local/include
/usr/include
Standard Version: c++20
IntelliSense Mode: linux-gcc-x64
Other Flags:
--g++
--gnu_version=110500
Total Memory Usage: 15 MB
Logs from the language server logging:
loggingLevel: Debug
LSP: (received - deferred) textDocument/didOpen: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx
LSP: (received) cpptools/preinitialize (id: 1)
LSP: (invoked) cpptools/preinitialize (id: 1)
LSP: Sending response (id: 1)
LSP: (received) cpptools/initialize (id: 2)
LSP: (invoked) cpptools/initialize (id: 2)
cpptools version (TypeScript): 1.23.6
cpptools version (native): 1.23.6.0
Autocomplete is enabled.
Error squiggles are enabled if all header dependencies are resolved.
Hover is enabled.
IntelliSense Engine = default.
LSP: Sending response (id: 2)
LSP: (received - deferred) cpptools/didChangeVisibleTextEditors
LSP: (received) cpptools/queryCompilerDefaults (id: 3)
LSP: (invoked) cpptools/queryCompilerDefaults (id: 3)
Querying compiler for default C++ language standard using command line: /usr/bin/clang -x c++ -E -dM /dev/null
Detected language standard version: c++17
Querying compiler's default target using command line: "/usr/bin/clang" -dumpmachine
Compiler returned default target value: x86_64-redhat-linux-gnu
Compiler info database not connected - skipping load.
Compiler query command line: /usr/bin/clang -std=c17 -m64 -Wp,-v -fno-blocks -E -dM -x c /dev/null
Attempting to get defaults from C compiler in "compilerPath" property: '/usr/bin/clang'
Compiler info database not connected - skipping load.
Compiler query command line: /usr/bin/clang -std=c++17 -m64 -Wp,-v -fno-blocks -E -dM -x c++ /dev/null
Attempting to get defaults from C++ compiler in "compilerPath" property: '/usr/bin/clang'
LSP: Sending response (id: 3)
LSP: (received) cpptools/queryCompilerDefaults (id: 4)
LSP: (invoked) cpptools/queryCompilerDefaults (id: 4)
LSP: (received) cpptools/didChangeCppProperties (id: 5)
LSP: (received - deferred) cpptools/didChangeVisibleTextEditors
LSP: Sending response (id: 4)
LSP: (invoked) cpptools/didChangeCppProperties (id: 5)
LSP: (received - deferred) cpptools/didChangeVisibleTextEditors
LSP: (received - deferred) cpptools/getDocumentSymbols: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 6)
LSP: (received - deferred) cpptools/getCodeActions: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 7)
LSP: (received - deferred) cpptools/getDocumentSymbols: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 8)
LSP: (received - deferred) cpptools/getCodeActions: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 9)
LSP: (received - deferred) cpptools/getFoldingRanges: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 10)
LSP: (received - deferred) cpptools/getDocumentSymbols: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 11)
LSP: $/cancelRequest (cpptools/getDocumentSymbols, id: 6)
LSP: $/cancelRequest (cpptools/getCodeActions, id: 7)
Compiler info database not connected - skipping load.
Querying compiler for default C++ language standard using command line: /usr/bin/g++ -x c++ -E -dM /dev/null
Compiler info database not connected - skipping load.
Detected language standard version: gnu++17
Querying compiler's default target using command line: "/usr/bin/g++" -dumpmachine
Compiler returned default target value: x86_64-redhat-linux
Compiler query command line: /usr/bin/g++ -std=c17 -m64 -Wp,-v -E -dM -x c /dev/null
Compiler query command line: /usr/bin/g++ -std=c++20 -m64 -Wp,-v -E -dM -x c++ /dev/null
Attempting to get defaults from C compiler in "compilerPath" property: '/usr/bin/g++'
Attempting to get defaults from C++ compiler in "compilerPath" property: '/usr/bin/g++'
Folder: /afs/cern.ch/user/f/fiedlerp/include/ will be indexed
Folder: /usr/include/ will be indexed
Folder: /usr/lib/gcc/x86_64-redhat-linux/11/include/ will be indexed
Folder: /usr/local/include/ will be indexed
Folder: /afs/cern.ch/user/f/fiedlerp/test/ will be indexed
LSP: (queued) textDocument/didOpen: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx
LSP: (queued) cpptools/didChangeVisibleTextEditors
LSP: (queued) cpptools/didChangeVisibleTextEditors
LSP: (queued) cpptools/didChangeVisibleTextEditors
LSP: (queued) cpptools/getDocumentSymbols: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 6)
LSP: (queued) cpptools/getCodeActions: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 7)
LSP: (queued) cpptools/getDocumentSymbols: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 8)
LSP: (queued) cpptools/getCodeActions: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 9)
LSP: (queued) cpptools/getFoldingRanges: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 10)
LSP: (queued) cpptools/getDocumentSymbols: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 11)
LSP: (invoked) cpptools/getDocumentSymbols: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 6)
LSP: Sending response (id: 5)
LSP: (invoked) cpptools/getDocumentSymbols: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 8)
LSP: (invoked) cpptools/getDocumentSymbols: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 11)
LSP: (invoked) textDocument/didOpen: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx
Unable to access browse database. (ensure_file)
LSP: (invoked) cpptools/didChangeVisibleTextEditors
Intellisense update pending for: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx
LSP: (invoked) cpptools/getCodeActions: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 7)
LSP: (invoked) cpptools/getCodeActions: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 9)
LSP: (invoked) cpptools/getFoldingRanges: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 10)
LSP: Sending response (id: 9)
LSP: Sending response (id: 10)
IntelliSense update scheduled and TU acquisition started for: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx
Resolving recursive includes...
Done resolving recursive includes.
sending compilation args for /afs/cern.ch/user/f/fiedlerp/test/test.cxx
system include: .
system include: /afs/cern.ch/user/f/fiedlerp/include
system include: /usr/include/c++/11
system include: /usr/include/c++/11/x86_64-redhat-linux
system include: /usr/include/c++/11/backward
system include: /usr/lib/gcc/x86_64-redhat-linux/11/include
system include: /usr/local/include
system include: /usr/include
define: __DBL_MIN_EXP__=(-1021)
define: __UINT_LEAST16_MAX__=0xffff
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: __INTMAX_C(c)=c ## L
define: __CHAR_BIT__=8
define: __UINT8_MAX__=0xff
define: __SCHAR_WIDTH__=8
define: __WINT_MAX__=0xffffffffU
define: __ORDER_LITTLE_ENDIAN__=1234
define: __SIZE_MAX__=0xffffffffffffffffUL
define: __SSE4_1__=1
define: __WCHAR_MAX__=0x7fffffff
define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1
define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1
define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1
define: __DBL_DENORM_MIN__=double(4.94065645841246544176568792868221372e-324L)
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: __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: __FLT32_HAS_DENORM__=1
define: __UINT_FAST8_MAX__=0xff
define: __DEC64_MAX_EXP__=385
define: __INT8_C(c)=c
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: __LDBL_IS_IEC_60559__=2
define: __FLT64X_HAS_QUIET_NAN__=1
define: __UINT_LEAST8_MAX__=0xff
define: __GCC_ATOMIC_BOOL_LOCK_FREE=2
define: __LAHF_SAHF__=1
define: __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128
define: __UINTMAX_TYPE__=long unsigned int
define: __linux=1
define: __DEC32_EPSILON__=1E-6DF
define: __FLT_EVAL_METHOD_TS_18661_3__=0
define: __unix=1
define: __UINT32_MAX__=0xffffffffU
define: __GXX_EXPERIMENTAL_CXX0X__=1
define: __FLT128_MIN_EXP__=(-16381)
define: __WINT_MIN__=0U
define: __FLT128_MIN_10_EXP__=(-4931)
define: __FLT32X_IS_IEC_60559__=2
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: __GCC_ATOMIC_POINTER_LOCK_FREE=2
define: __FLT32X_MANT_DIG__=53
define: __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2
define: __USER_LABEL_PREFIX__=
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: __FLT32_DIG__=6
define: __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F
define: __GXX_WEAK__=1
define: __SHRT_WIDTH__=16
define: __FLT32_IS_IEC_60559__=2
define: __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L
define: __DBL_IS_IEC_60559__=2
define: __DEC32_MAX__=9.999999E96DF
define: __CHAR8_TYPE__=unsigned char
define: __FLT64X_DENORM_MIN__=3.64519953188247460252840593361941982e-4951F64x
define: __CRC32__=1
define: __FLT32X_HAS_INFINITY__=1
define: __INT32_MAX__=0x7fffffff
define: __unix__=1
define: __INT_WIDTH__=32
define: __SIZEOF_LONG__=8
define: __STDC_IEC_559__=1
define: __STDC_ISO_10646__=201706L
define: __UINT16_C(c)=c
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: __FLT64_MANT_DIG__=53
define: __FLT64X_MANT_DIG__=64
define: __GNUC__=11
define: __GXX_RTTI=1
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: __FLT32_HAS_INFINITY__=1
define: __DBL_MAX__=double(1.79769313486231570814527423731704357e+308L)
define: __INT_FAST32_MAX__=0x7fffffffffffffffL
define: __DBL_HAS_INFINITY__=1
define: __SSE4_2__=1
define: __SIZEOF_FLOAT__=4
define: __HAVE_SPECULATION_SAFE_VALUE=1
define: __DEC32_MIN_EXP__=(-94)
define: __INTPTR_WIDTH__=64
define: __FLT64X_HAS_INFINITY__=1
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: __cplusplus=202002L
define: __DEC32_MIN__=1E-95DF
define: __DEPRECATED=1
define: __POPCNT__=1
define: __DBL_MAX_EXP__=1024
define: __WCHAR_WIDTH__=32
define: __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32
define: __DEC128_EPSILON__=1E-33DL
define: __SSE2_MATH__=1
define: __ATOMIC_HLE_RELEASE=131072
define: __PTRDIFF_MAX__=0x7fffffffffffffffL
define: __amd64=1
define: __ATOMIC_HLE_ACQUIRE=65536
define: __GNUG__=11
define: __LONG_LONG_MAX__=0x7fffffffffffffffLL
define: __SIZEOF_SIZE_T__=8
define: __FLT64X_MIN_EXP__=(-16381)
define: __SIZEOF_WINT_T__=4
define: __LONG_LONG_WIDTH__=64
define: __FLT32_MAX_EXP__=128
define: __GXX_ABI_VERSION=1016
define: __FLT128_HAS_INFINITY__=1
define: __FLT_MIN_EXP__=(-125)
define: __GCC_HAVE_DWARF2_CFI_ASM=1
define: __x86_64=1
define: __INT_FAST64_TYPE__=long int
define: __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64
define: __DBL_MIN__=double(2.22507385850720138309023271733240406e-308L)
define: __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128
define: __FLT64X_NORM_MAX__=1.18973149535723176502126385303097021e+4932F64x
define: __SIZEOF_POINTER__=8
define: __LP64__=1
define: __DBL_HAS_QUIET_NAN__=1
define: __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x
define: __DECIMAL_BID_FORMAT__=1
define: __FLT64_MIN_10_EXP__=(-307)
define: __FLT64X_DECIMAL_DIG__=21
define: __DEC128_MIN__=1E-6143DL
define: __REGISTER_PREFIX__=
define: __UINT16_MAX__=0xffff
define: __LDBL_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: __DEC128_MAX__=9.999999999999999999999999999999999E6144DL
define: __FLT_MANT_DIG__=24
define: __LDBL_DECIMAL_DIG__=21
define: __VERSION__="11.5.0 20240719 (Red Hat 11.5.0-5)"
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: __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: __INT_FAST32_TYPE__=long int
define: __UINT_LEAST16_TYPE__=short unsigned int
define: __DBL_HAS_DENORM__=1
define: __SIZE_TYPE__=long unsigned int
define: __UINT64_MAX__=0xffffffffffffffffUL
define: __FLT_IS_IEC_60559__=2
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: __FLT_RADIX__=2
define: __INT_LEAST16_TYPE__=short int
define: __LDBL_EPSILON__=1.08420217248550443400745280086994171e-19L
define: __UINTMAX_C(c)=c ## UL
define: __GNUC_RH_RELEASE__=5
define: __k8=1
define: __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x
define: __SIG_ATOMIC_MAX__=0x7fffffff
define: __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2
define: __SIZEOF_PTRDIFF_T__=8
define: __LDBL_DIG__=18
define: __FLT64_IS_IEC_60559__=2
define: __x86_64__=1
define: __FLT32X_MIN_EXP__=(-1021)
define: __DEC32_SUBNORMAL_MIN__=0.000001E-95DF
define: __INT_FAST16_MAX__=0x7fffffffffffffffL
define: __FLT64_DIG__=15
define: __UINT_FAST32_MAX__=0xffffffffffffffffUL
define: __UINT_LEAST64_TYPE__=long unsigned int
define: __FLT_HAS_QUIET_NAN__=1
define: __FLT_MAX_10_EXP__=38
define: __LONG_MAX__=0x7fffffffffffffffL
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: __DEC64_MANT_DIG__=16
define: __INT64_MAX__=0x7fffffffffffffffL
define: __SEG_GS=1
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: __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: __SSSE3__=1
define: __EXCEPTIONS=1
define: __PTRDIFF_WIDTH__=64
define: __LDBL_MANT_DIG__=64
define: __FLT64_HAS_INFINITY__=1
define: __FLT64X_MAX__=1.18973149535723176502126385303097021e+4932F64x
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: __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: __FLT64X_MAX_EXP__=16384
define: __UINT_FAST64_TYPE__=long unsigned int
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: __INT_LEAST64_MAX__=0x7fffffffffffffffL
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: __LDBL_MAX_EXP__=16384
define: __FLT32X_MAX_10_EXP__=308
define: __SIZEOF_INT128__=16
define: __FLT64X_IS_IEC_60559__=2
define: __LDBL_MAX_10_EXP__=4932
define: __ATOMIC_RELAXED=0
define: __DBL_EPSILON__=double(2.22044604925031308084726333618164062e-16L)
define: __FLT32_MIN_EXP__=(-125)
define: __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128
define: _LP64=1
define: __UINT8_C(c)=c
define: __FLT64_MAX_EXP__=1024
define: __INT_LEAST32_TYPE__=int
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: __SSE3__=1
define: __INT_FAST8_TYPE__=signed char
define: __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x
define: __STDCPP_THREADS__=1
define: __GNUC_STDC_INLINE__=1
define: __FLT64_HAS_DENORM__=1
define: __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32
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: __INTMAX_WIDTH__=64
define: __UINT64_TYPE__=long unsigned int
define: __UINT32_C(c)=c ## U
define: __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F
define: __FLT128_IS_IEC_60559__=2
define: __INT8_MAX__=0x7f
define: __LONG_WIDTH__=64
define: __UINT_FAST32_TYPE__=long unsigned int
define: __FLT32X_NORM_MAX__=1.79769313486231570814527423731704357e+308F32x
define: __CHAR32_TYPE__=unsigned int
define: __FLT_MAX__=3.40282346638528859811704183484516925e+38F
define: __SSE2__=1
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: __DEC128_MAX_EXP__=6145
define: __FLT32X_HAS_QUIET_NAN__=1
define: __ATOMIC_CONSUME=1
define: __GNUC_MINOR__=5
define: __INT_FAST16_WIDTH__=64
define: __UINTMAX_MAX__=0xffffffffffffffffUL
define: __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x
define: __DBL_MAX_10_EXP__=308
define: __LDBL_DENORM_MIN__=3.64519953188247460252840593361941982e-4951L
define: __GCC_ATOMIC_CHAR8_T_LOCK_FREE=2
define: __INT16_C(c)=c
define: __STDC__=1
define: __FLT32X_DIG__=15
define: __PTRDIFF_TYPE__=long int
define: __ATOMIC_SEQ_CST=5
define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16=1
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: __UINT_FAST8_TYPE__=unsigned char
define: _GNU_SOURCE=1
define: __ATOMIC_ACQ_REL=4
define: __ATOMIC_RELEASE=3
other: --g++
other: --gnu_version=110500
stdver: c++20
intelliSenseMode: linux-gcc-x64
Update IntelliSense time (sec): 0.225
LSP: (received) cpptools/getCodeActions: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 12)
LSP: (invoked) cpptools/getCodeActions: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 12)
LSP: Sending response (id: 12)
LSP: (received) cpptools/getFoldingRanges: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 13)
LSP: (invoked) cpptools/getFoldingRanges: file:///afs/cern.ch/user/f/fiedlerp/test/test.cxx (id: 13)
LSP: Sending response (id: 13)
Other Extensions
No response
Additional context
See above minimal working example.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci la diagnostica in test/test.cxx usando la configurazione C++20 indicata e l'esempio minimo di fixed_string. Inizia tracciando l'analisi IntelliSense della dichiarazione template<fixed_string str = {}>; il lavoro è completato quando la zero-inizializzazione valida non produce più una sottolineatura ondulata «expected an expression», mentre la sintassi non valida continua a essere diagnosticata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- cpp
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100