Skip to content

Autocomplete fails for templated class/struct #5039

Open
@kbthomp1

Description

@kbthomp1

Type: LanguageService

Describe the bug

  • OS and Version: MacOS Mojave 10.14.6
  • VS Code Version: 1.42.1
  • C/C++ Extension Version: 0.26.3
  • Other extensions you installed (and if the issue persists after disabling them):
  • A clear and concise description of what the bug is.

intelliSense autocomplete fails to deduce type of templated class declared in templated class/function.

To Reproduce

namespace ID {
template <typename T>
struct addingClass {
  public:
    addingClass(T a, T b) : result(a + b) {}
    const T result;
};

template <typename T>
class TemplatedClass {
  public:
    static T add(T a, T b) {
        auto addition = addingClass<T>(a, b);
        auto result = addition.result; // intelliSense provides not provide auto-complete for addingClass::result member
        return result;
    }
};
}

int main() {
    return ID::TemplatedClass<int>::add(-1, 1);
}

Hovering over the addition variable shows auto addition, and line 14 fails to auto-complete the result class member.

Expected behavior

I would expect auto-complete to deduce the class members of the addingClass in the above example.

Screenshots

Screen Shot 2020-03-02 at 3 08 36 PM

Screen Shot 2020-03-02 at 3 08 50 PM

Additional context

c_cpp_properties.json:

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "macFrameworkPath": [],
            "compilerPath": "/usr/local/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64",
            "configurationProvider": "vector-of-bool.cmake-tools"
        }
    ],
    "version": 4
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions