在寻找这个问题的解决方案时,我在另一个论坛上找到了这个帖子,该论文说该标准要求完全定义STL-Datastructure的所有模板参数.这意味着生成一个结构,该结构在其自身内部存储其自身类型的元素,从而调用未定义的行为.但是据我所知,这是没有抓到最前的C++ 11数据结构(即std::vector,std::map等).
实际上可能是在STL-Datastructures中使用不完整类型的问题?或者更确切地说,以下代码可能导致的潜在危险:
#include <stdint.h>
#include <map>
struct Test {
std::map<uint32_t, Test> m_map1;
};
int main() {
return 1;
}
Run Code Online (Sandbox Code Playgroud)
或者这是这些问题之一,这些代码可能无法使用某些STL实现编译,但如果它编译,您可以确定它有效吗?
简单的问题:我如何让它工作?
struct A {
double whatever;
std::unordered_map<std::string, A> mapToMoreA;
}
Run Code Online (Sandbox Code Playgroud)
g ++错误:std :: pair <_T1,_T2> :: second的类型不完整
据我所知,在实例化地图时,编译器需要知道A的大小,但它不知道这个,因为地图是在A的声明中声明的,所以这是解决这个问题的唯一方法来使用指针A(不喜欢这样做)?