考虑下面的代码:为什么checked_array_iterator在VS2013中不包括<iterator>,但在VS2017中失败?
#include <memory>
#include <locale>
int main() {
auto source = std::make_unique<int[]>(16);
auto dest = std::make_unique<int[]>(16);
auto dp = stdext::checked_array_iterator<int*>(dest.get(), 16);
std::copy_n(source.get(), 16, dp);
return 0;
}
它通过运行cl.exe /EHsc <file>.cpp
完全编译上的Visual Studio 2013。然而,在Visual Studio中2017年出现以下错误(等等)是由cl.exe
抛出:
vc12.cpp(7): error C2653: 'stdext': is not a class or namespace name
vc12.cpp(7): error C2065: 'checked_array_iterator': undeclared identifier
为什么这个代码不再编译?
的问题可能是很具体,但在大项目我花了相当长的时间才弄清楚为什么它在VS2013上编译,没有搜索引擎取得任何结果。 – Lennart
顺便说一句,应该是'int main'。 'void main'不是可移植的C++。 –
@BaummitAugen:是的,我尽量保持最小。将添加'int'和'return'。 – Lennart