microsoft / microsoft/vscode-cpptools
Find All References on a variable template returns nothing
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 6.2k
- Forks
- 1.7k
- Avg merge
- 14h 46m
- Merged PRs (30d)
- 61
Description
Environment
cpptools — Find All References on the variable template ex::zeroValue returns nothing
| Field | Value |
|---|---|
| Symbol (spec id) | var-template-zeroValue |
| Declaration | template <class T> constexpr T zeroValue = T(0); (variable template) |
| Query position | src/extras.h:22:13 (cursor on zeroValue) |
| Affected LSP request | textDocument/references |
| Repro archive | P1-var-template-zeroValue.zip (this folder) |
Summary
Find All References on the variable template ex::zeroValue returns no references in VS Code with the C/C++ extension (cpptools), missing both instantiation uses. The symbol appears unused even though it is instantiated twice.
Environment
- Editor: Visual Studio Code 1.33.5
- Extension: C/C++ (
ms-vscode.cpptools), default IntelliSense engine - Language standard: C++20 (freestanding fixture; no STL/toolchain required)
Steps to reproduce
- Extract
P1-var-template-zeroValue.zipand open thecpp-projectfolder in VS Code (C/C++ extension enabled). - Optionally configure with CMake Tools (preset
cdb); the fixture also parses under default C++20 IntelliSense. - Open
src/extras.h, place the cursor onzeroValueinconstexpr T zeroValue = T(0);(line 22, col 13). - Invoke Find All References (
Shift+Alt+F12).
Expected vs actual
| Source | Result count |
|---|---|
| Expected | 3 |
| VS Code / cpptools | 0 (no references) |
Expected (3): the template declaration (extras.h:22) and its two instantiation uses in main() — ex::zeroValue<int> (main.cpp:150) and ex::zeroValue<double> (main.cpp:151).
Actual (0): "Find All References" reports no results (the instantiation uses are not found).
Why it matters
A false "no references" on a live symbol is high risk: an automated agent (or a developer) can conclude the variable template is dead and delete it, breaking the two instantiations.
Bug Summary and Steps to Reproduce
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with P1-var-template-zeroValue.zip and inspect src/extras.h:22 and the uses in main.cpp:150-151. Trace the textDocument/references handling for the variable-template symbol and compare the reported result with the expected three references. Done means Find All References returns the declaration and both instantiation uses.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, typescript
- Domain
- compilers, devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 62/100