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.zip and open the cpp-project folder 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 on zeroValue in constexpr 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
P1-var-template-zeroValue.zip
Environment
cpptools — Find All References on the variable template
ex::zeroValuereturns nothingvar-template-zeroValuetemplate <class T> constexpr T zeroValue = T(0);(variable template)src/extras.h:22:13(cursor onzeroValue)textDocument/referencesP1-var-template-zeroValue.zip(this folder)Summary
Find All References on the variable template
ex::zeroValuereturns 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
ms-vscode.cpptools), default IntelliSense engineSteps to reproduce
P1-var-template-zeroValue.zipand open thecpp-projectfolder in VS Code (C/C++ extension enabled).cdb); the fixture also parses under default C++20 IntelliSense.src/extras.h, place the cursor onzeroValueinconstexpr T zeroValue = T(0);(line 22, col 13).Shift+Alt+F12).Expected vs actual
Expected (3): the template declaration (
extras.h:22) and its two instantiation uses inmain()—ex::zeroValue<int>(main.cpp:150) andex::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
P1-var-template-zeroValue.zip