【发布时间】:2021-09-25 21:48:51
【问题描述】:
我有以下代码
using namespace std;
template <class T>
vector<T> func(){
return vector<T>(100,0);
}
int main(){
auto test = func<int>();
cout << test[0] << " " << test.size() << endl;
return 0;
}
它在没有警告的情况下编译并正确运行,但 VSCode 智能感知突出显示 test 并带有警告 explicit type is missing ('int' assumed)。我在这里做错了吗?将行更改为 vector<int> test = func<int>(); 使 VSCode 很高兴,但我不明白为什么这里的 auto 会有任何问题。我错过了什么吗?
VSCode 提供的唯一修复是禁用错误曲线,我喜欢在其他情况下这样做。
【问题讨论】:
-
您的智能感知不知道您构建的 C++ 标准是什么。
auto作为占位符类型仅适用于 C++11 及更高版本。所以你应该配置负责的 VSCode 扩展。 -
这有效,对于遇到此问题的其他人,请注意必须关闭 VSCode 才能使更改生效。
-
@eeegnu 随时发布答案,详细解释您是如何解决问题的。