Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

IntelliSense reports an error on a valid deduction guide (error: the return type must directly designate a specialization of the associated class template)

未關閉
#14,824 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

還沒有人認領這個 Issue。

評估

難度
4/5
預估耗時
3-5 天
新手友好度
52/100
Issue 類型
缺陷
描述清晰度
描述清楚
活躍度
活躍
技術堆疊
c, typescript
領域
devtools

研究方向

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.

由索引模型根據 Issue 內容生成。

描述

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

主要語言
TypeScript
星號
6.2k
分支
1.7k
平均合併
1 天 16 小時
30 天內合併 PR
41

環境準備

  • 沒有 Dockerfile 或 Docker Compose 檔案
  • 沒有 Pull Request 範本
  • 閱讀貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

microsoft/vscode-cpptools 的其他 Issue

查看 microsoft/vscode-cpptools 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。