class A {
    class B {
    public:
        int gwe = 0;
    };

    array<B, 3> arr;

public:
    A() {
        arr[0].gwe; // When starting to type 'g', IDE will suggest autocompletion for 'gwe'
    }
};

现在,如果您放在上面:template<typename T>尝试访问数组元素的成员时,IDE不会自动完成。
让它成为Xcode,CLion,我还没有尝试过VS,但我坚信它也可以复制行为。
在将泛型与其他语言(例如C#,Java或Swift)结合使用之前,我还没有经历过。
那么,为什么这必须发生在C++上呢?

最佳答案

正确地解析C++是一个极其复杂且耗时的问题。

如果IDE能够完美地完成它,则将花费与编译应用程序一样多的时间,并且您会因为IDE无响应而感到恼火。

因此,为了做出响应,IDE在有限的时间内进行了有限的解析,这意味着它们并不总是能够正确地进行解析。

自动完成功能和类似功能可以为您提供帮助/帮助,但它们并不是最终的事实-不要期望它们如此。

关于c++ - C++ IDE将无法推断/自动完成模板类中std::array下标表达式的成员访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59545304/

10-13 08:29