IntelliSense reports an error on a valid deduction guide (error: the return type must directly designate a specialization of the associated class template)
Maintainer antworten meist innerhalb von 1 Tag
@Colengms arbeitet bereits daran.
Seit 09.10.2026.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 52/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- c, typescript
- Bereich
- devtools
Rechercherichtung
The report provides a minimal C++ reproduction with deduction guides and IntelliSense diagnostics, but does not name the parser implementation or a repository test. Start by locating the IntelliSense parsing and deduction-guide tests in vscode-cpptools, then run the relevant tests against the supplied example. Done when IntelliSense accepts the valid guide without the reported error or redeclaration diagnostic.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Environment
- OS: macOS 27.0.1 (Apple Silicon)
- VS Code version: 1.140.0
- C/C++ extension version: 1.34.4 (darwin-arm64)
- Compilers that accept the code: Apple clang 21.0.0 (clang-2100.3.34.2), GCC 16.2.0 (
-std=c++23 -Wall -Wextra -pedantic)
Bug Summary and Steps to Reproduce
Bug Summary:
IntelliSense reports an error on a valid deduction guide whose return type is an explicit specialization of the class template. Clang and GCC compile and run the code without warnings.
Steps to reproduce:
Set the "cppStandard": "gnu++20".
#include <cstddef>
#include <span>
using std::size_t;
template< size_t i = std::dynamic_extent, size_t s = std::dynamic_extent >
struct slice
{
static constexpr size_t index = i, size = s;
};
template<>
struct slice< std::dynamic_extent, std::dynamic_extent >
{
size_t index = 0, size = 0;
constexpr slice() noexcept = default;
constexpr slice( size_t i, size_t s ) noexcept : index( i ), size( s ) {}
};
slice() -> slice<>;
slice( size_t, size_t ) -> slice<>; // error: "the return type must directly designate a specialization of the associated class template"
template< size_t i, size_t s >
constexpr slice< i, s > const_slice;
auto s0 = slice{}; // OK
auto s1 = slice{ 1, 2 }; // error
auto s2 = slice< 3, 4 >{}; // OK
auto s3 = const_slice< 5, 6 >; // OK
slice s5 = { 2, 4 }; // error
slice s6; // OK
size_t n = 1;
auto s7 = slice{ n, 3 }; // error
int main() {}
Update: switching to 1.35.3 only partly fixed the problem. Now the error occurs at these lines:
slice() -> slice<>; // redeclaration of deduction guide "()->slice<18446744073709551615UL, 18446744073709551615UL>" (previous declaration at line 30)
slice( size_t, size_t ) -> slice<>; // rredeclaration of deduction guide "(size_t, size_t)->slice<18446744073709551615UL, 18446744073709551615UL>" (previous declaration at line 32)
Configuration and Logs
-------- Diagnostics - 09/10/2026, 11:09:54
Version: 1.35.3
Current Configuration:
{
"name": "Mac",
"includePath": [
"/Users/dom/Repositories/Foo/**"
],
"defines": [],
"compilerPath": "/usr/bin/clang",
"cStandard": "gnu17",
"intelliSenseMode": "macos-clang-arm64",
"compilerPathInCppPropertiesJson": "/usr/bin/clang",
"cppStandard": "c++26",
"intelliSenseModeIsExplicit": false,
"cStandardIsExplicit": false,
"cppStandardIsExplicit": true,
"mergeConfigurations": false,
"recursiveIncludes": {},
"recursiveIncludesPriorityIsExplicit": false,
"recursiveIncludesOrderIsExplicit": false,
"compilerPathIsExplicit": false,
"browse": {
"limitSymbolsToIncludedHeaders": true
}
}
Modified Settings:
{
"C_Cpp.default.cppStandard": "c++26",
"C_Cpp.copilotHover": "disabled"
}
Additional Tracked Settings:
{
"editorTabSize": 4,
"editorInsertSpaces": true,
"editorAutoClosingBrackets": "languageDefined",
"filesEncoding": "utf8",
"filesAssociations": {},
"filesExclude": {
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/.jj": true,
"**/.DS_Store": true,
"**/Thumbs.db": true
},
"filesAutoSaveAfterDelay": true,
"editorInlayHintsEnabled": true,
"editorParameterHintsEnabled": true,
"searchExclude": {
"**/node_modules": true,
"**/bower_components": true,
"**/*.code-search": true
},
"workbenchSettingsEditor": "ui"
}
cpptools version (native): 1.35.3.0
Current database path: /Users/dom/Library/Caches/vscode-cpptools/3e0375b3f54b329c80d0cabaf418165d/.browse.VC.db
Translation Unit Mappings:
[ /Users/dom/Repositories/Foo/Projects/Engine/Source/Engine.cpp - source TU]:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_ctype.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_time.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/arm/signal.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/assert.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/malloc/_malloc.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/math.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_sigaltstack.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/_types/_size_t.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/resource.h
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/21/include/__stddef_max_align_t.h
/Users/dom/Repositories/Foo/Projects/Engine/Source/Foundation/Math/Matrix/MatrixForward.hpp
/Users/dom/Repositories/Foo/Projects/Engine/Source/Foundation/Math/Matrix/Slice.hpp
/Users/dom/Repositories/Foo/Projects/Engine/Source/Foundation/Math/Matrix/StaticMatrix.hpp
/Users/dom/Repositories/Foo/Projects/Engine/Source/Foundation/Math/Vector/VectorForward.hpp
Translation Unit Configurations:
[ /Users/dom/Repositories/Foo/Projects/Engine/Source/Engine.cpp ]
Process ID: 82533
Memory Usage: 447 MB
Compiler Path: /usr/bin/clang
Language: C++
Include Paths:
system include: /usr/local/include
system include: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1
system include: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/21/include
system include: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
system include: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
system framework search path (default): /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks
system framework search path (default): /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/SubFrameworks
include (recursive): /Users/dom/Repositories/Foo
Standard Version: c++26
IntelliSense Mode: macos-clang-arm64
Other Flags:
--clang
--clang_version=210106
Total Memory Usage: 447 MB
Other Extensions
No response
Additional context
No response
- Vorherrschende Sprache
- TypeScript
- Sterne
- 6.2k
- Forks
- 1.7k
- Ø Merge
- 2 T. 8 Std.
- Gemergte PRs (30 T.)
- 26
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus microsoft/vscode-cpptools
-
Allow case-insensitive suppression of parameter inlay hintsEvtl. vergeben @Colengms hat das vor 4 Tagen übernommen. Offenbug Feature: Inlay Hint Language Service
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
microsoft/vscode-cpptools#14829 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
microsoft/vscode-cpptools#14838 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 38/100
microsoft/vscode-cpptools#14834 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Directory iteration no longer respects files.excludeEvtl. vergeben @Colengms hat das vor 9 Tagen übernommen. Offenbug Language Service
microsoft/vscode-cpptools#14827 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Including `stdatomic.h` causes `size_t` to report the wrong type in IntellisenseEvtl. vergeben @Colengms hat das vor 5 Tagen übernommen. Offenbug fixed Language Service
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
microsoft/vscode-cpptools#14825 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in microsoft/vscode-cpptools
Ähnliche Issues
-
freshness freshness:observed-only
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
thoroc/context-radar#280 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
-
documentation story
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Maintainer antworten meist innerhalb von 1 Tag
-
Billing: computeBundleEconomicsFrom treats a NULL component cost as 0, inflating bundle marginOffenbug category:billing priority:p3 track:fast
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
LanternOps/breeze#9223 ·
Maintainer antworten meist innerhalb von 1 Tag