microsoft / microsoft/vscode-cpptools

Intellisense not recognizing constexpr methods of captured values in lambda

Offen
#4,917 3 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug Language Service Visual Studio
Vorherrschende Sprache
TypeScript
Sterne
6.2k
Forks
1.7k
Ø Merge
14 Std. 46 Min.
Gemergte PRs (30 T.)
61

Beschreibung

Type: LanguageService

Describe the bug

  • OS and Version: Windows 10 18362
  • VS Code Version: 1.41.1
  • C/C++ Extension Version: 0.26.3
  • I have CMake tools installed

To Reproduce

  1. Write
auto array = std::array<int, 4>{};
array = [&array]{ return std::array<int, array.size()>{}; }();
  1. Intellisense will say "Expression must have constant value -- *this cannot be used as constant value"
    (For some reason my Intellisense won't give error messages in English, that error message above is translated from Chinese "表达式必须含有常量值 -- *this 的值不能用作常数")

Expected behavior

This shouldn't be flagged as an error since it's valid:

Screenshots

image

Additional context
Cpp Properties:

{
  "compilerPath": "C:/MyMinGW/i686-9.2.0-static-release-win32-dwarf-rt_v6/mingw32/bin/gcc.exe",
  "cStandard": "c11",
  "cppStandard": "c++17",
  "configurationProvider": "vector-of-bool.cmake-tools",
  "compileCommands": "${workspaceFolder}/build/compile_commands.json"
}

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, das gemeldete C++17-Snippet mit dem aufgeführten Compiler und der aufgeführten CMake-Konfiguration zu reproduzieren, und vergleiche anschließend die Diagnose von IntelliSense mit dem Ergebnis des Compilers. Verfolge die Verarbeitung von constexpr-Ausdrücken durch den Sprachdienst, die erfasste Lambda-Werte einbeziehen; als erledigt gilt die Aufgabe, wenn der gültige Ausdruck nicht mehr als Fehler markiert wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.