【发布时间】:2020-06-27 09:34:43
【问题描述】:
为什么下面的代码可以在 Visual Studio 2019 中编译,而不能在 gcc 8.3 中编译?
#include<array>
template<typename T> class myClass {
public:
template<unsigned int N> myClass(const std::array<T, N>& elems) { /* do something */ }
};
int main() {
std::array<int, 10> A;
myClass<int> Tabular(A);
}
这是我从学生项目中提取的一个 sn-p,因为它对我来说看起来很奇怪。我用 gcc 8.3 尝试这个,因为我怀疑编译器抱怨模板参数推导失败。所以我告诉我的学生,这行不通。但他认为这确实在 VS 中编译而没有警告,我检查了一下,他是对的。
因为我离称自己为专家还很遥远,所以我无法向自己和我的学生解释是否/为什么/什么是错的。
【问题讨论】:
-
作弊可能不是最好的选择。
-
你说得对,我想通过,作弊''我想说,,我不明白''
标签: c++ visual-studio templates gcc