在阅读《STL源码分析》的过程中,第二章2.1.1设计一个简单的空间配置器,在vs2019上通不过,报错:
错误 C2440 “static_cast”: 无法从“JJ::allocator<int>”转换为“JJ::allocator<U>”
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vector 676
发现是没有加拷贝构造函数:
template<typename U>
allocator(const allocator<U>&) {}
然后重新编译,报错:
错误 C2512 “JJ::allocator<int>::allocator”: 没有合适的默认构造函数可用
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\xmemory 1328
继续加:
allocator() {}
OK,成功编译。